java重定向问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java重定向问题相关的知识,希望对你有一定的参考价值。
在java中,我想在一个servlet里重定向到令一个url上,并且把参数post过去。怎么做,?求解!
参考技术A 转发是向服务器请求了一次,在这个过程中request都有效,而重定向就不一样了,重定向其实是向服务器请求了两次,第一次向服务器请求,服务器给客户端一个响应码,客户端带着这个响应码再向服务器请求一次,request在第一次请求时有效,在第二次请求时request已被销毁,所以无效。 参考技术B request.setAttribute("随便起个名字", 你要传的值); 或者放session到下个URL就能取到 参考技术C request.getRequestDispatcher("/somePage.jsp?id="+123).forward(req, resp);
java启动命令日志输出重定向
1、问题描述
java启动项目命令:
nohup java -jar -server -Dserver.port=10001 -Xms1024M -Xmx1024M -Dspring.profiles.active=dev /usr/local/application/laowang/laowang.jar >/dev/null 2>&1 &
执行起来是没问题,关于日志输出重定向,开始有点搞混了,记录下。
2、解决方案
1、首先要明确的是,nohup这些是在linux下执行的shell命令,其中的重定向也是shell命令参数的一种,不是java专用命令;
2、 nohup --- & ,这个是shell命令,表明是在后台运行,挂起,关闭ssh窗口也不会被关闭;
3、我们经常使用nohup command &
命令形式来启动一些后台程序,比如一些java服务:
# nohup java -jar xxxx.jar &
为了不让一些执行信息输出到前台(控制台),我们还会加上刚才提到的>/dev/null 2>&1
命令来丢弃所有的输出:
# nohup java -jar xxxx.jar >/dev/null 2>&1 &
当执行shell命令时,会默认打开3个文件,每个文件有对应的文件描述符来方便我们使用:
类型 | 文件描述符 | 默认情况 | 对应文件句柄位置 |
---|---|---|---|
标准输入(standard input) | 0 | 从键盘获得输入 | /proc/self/fd/0 |
标准输出(standard output) | 1 | 输出到屏幕(即控制台) | /proc/self/fd/1 |
错误输出(error output) | 2 | 输出到屏幕(即控制台) | /proc/self/fd/2 |
(1)“>/dev/null"
这条命令的作用是将标准输出1重定向到/dev/null
中。 /dev/null
代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null
之后,标准输出就会不再存在,没有任何地方能够找到输出的内容;
(2)"2>/dev/null"
意思就是把错误输出到“黑洞”;
(3)“>/dev/null 2>&1"
默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”;
(4)"2>&1 >/dev/null"
意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕;
(5) >log.log 是将信息输出到log.log日志中
# nohup java -jar xxxx.jar >/var/log.log 2>&1 &
2>&1 是将标准错误信息转变成标准输出,这样就可以将错误信息输出到log.log 日志里面来。
更多信息请关注公众号:「软件老王」,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。
以上是关于java重定向问题的主要内容,如果未能解决你的问题,请参考以下文章