java重定向代码 javaajax重定向

Java技巧:使用Runtime.exec重定向本地程序调用Java具有使用Runtime exec对本地程序调用进行重定向的能力 但是用重定向或者管道进行命令调用将会出错 解决这一问题的办法是通过命令shell运行命令 在Java中调用本地程序会破坏平台独立性规则 但是经常需要这么做才行 以下是一个简单类的范例 展示了在Unix下运行ls命令的情形 import java io BufferedInputStream;import java io IOException;public class ExecLs { static public void main(String[] args) { String cmd = lstry { Process ps = Runtime getRuntime() exec(cmds); System out print(loadStream(ps getInputStream())); System err print(loadStream(ps getErrorStream())); } catch(IOException ioe) { ioe printStackTrace(); } } // read an input stream into a String static String loadStream(InputStream in) throws IOException { int ptr = ; in = new BufferedInputStream(in); StringBuffer buffer = new StringBuffer(); while( (ptr = in read()) != ) { buffer append((char)ptr); } return buffer toString();}}上述代码中重要的部分是exec方法和命令字符串ls 本程序将输出运行目录下的列表细节 那么 如果你想重定向这些细节内容到文件该怎么办?这一命令行的输入应该写成lsFILE 但是当你将cmd变量改变成这样的话 运行就会出错 如下 /bin/ls: : No such file or directory/bin/ls: FILE: No such file or directory 出错的原因在于额外的参数被直接传送到了ls命令而不是送到实际的命令行 解决这一问题的办法是将cmd串弄成一个字符串数组 并且将你想运行的程序传送到命令shell 因此 将cmd行改成下面的样子String[] cmd = { sh c lsFILE }; 你将得到一个名为FILE的文件 里面是目录列表 c参数是告诉它读取随后的字符串 而最后的参数是你要运行的脚本 在这种情况下 管道也运行良好 所以你可以把命令改成下面的方式 String[] cmd = { /bin/sh c /bin/ls | grep dFILE }; 这种形式将给你一个名为FILE的文件 里面是ls条目中包含d的条目 给出sh和ls的全路径有利于提供你的程序的安全性 虽然使用Runtime exec不是创建独立于平台的Java的最佳方式 但是有些时候是必要的 使用这种重定向技术有助于走出Runtime exec的限制lishixinzhi/Article/program/Java/hx/201311/25922
java:以下代码我把输出重定向到一个文本中,完毕后我又想直接在控制台输出,该如何修改问题重复了?重定向前把PrintStream out = System.out;恢复的时候,在setOut(out);不要说不行,已经测试过了 。
java web程序怎么实现301重定向其实做站点开发的很少使用java的 , 像Apache等可以直接配置301跳转,可是tomcat只是一个servlet容器,没办法我只能使用过滤器来实现301跳转 , 下面把代码分享给大家 。
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class URLFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
final HttpServletRequest req = (HttpServletRequest) request;
finalHttpServletResponse res=(HttpServletResponse)response;
String requestPage = req.getRequestURI();
String queryString = (req.getQueryString() == null ? "" : "?"+req.getQueryString());
if(req.getRequestURL().indexOf("") =0){
res.setStatus(301);
res.setHeader( "Location", ""+requestPage+queryString);
res.setHeader( "Connection", "close" );
}
chain.doFilter(request, response);

推荐阅读