德阳吧

您现在的位置是:首页 > 生活百科 > 正文

生活百科

java下载文件到浏览器(java获取浏览器下载路径)

zhiyongz2024-07-10生活百科
1. 增强HttpServletResponse对象

1. 实现一个增强的HttpServletResponse类,需要继承

javax.servlet.http.HttpServletRequestWrapper类,通过重写自己需要增强的方法来实现(这种模式就叫做装饰者模式),使用该增强类在加上过滤器就可以实现无编码转换处理代码。

public class MyRequest extends HttpServletRequestWrapper{
 private HttpServletRequest req;
 public MyRequest(HttpServletRequest request) {
  super(request);
  req=request;
 }
 @Override
 public String getParameter(String name) {
  //解决编码问题,无论是post还是get请求,都不需要在业务代码中对编码再处理
  String method=req.getMethod();
  if("get".equalsIgnoreCase(method)){
   try {
    String str=req.getParameter(name);
    byte[] b=str.getBytes("iso8859-1");
    String newStr=new String(b, "utf-8");
    return newStr;
   } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }else if("post".equalsIgnoreCase(method)){
   try {
    req.setCharacterEncoding("utf-8");
   } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  //绝对不能删除此行代码,因为此行代码返回的就是编码之后的数据
  return super.getParameter(name);
 }
}

在过滤器中应用

public class FilterTest4 implements Filter {
 @Override
 public void init(FilterConfig filterConfig) throws ServletException {}
 @Override
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
   throws IOException, ServletException {
  //生成增强的HttpServletRequest对象
  HttpServletRequest req=(HttpServletRequest) request;
  MyRequest myReq=new MyRequest(req);
  //将增强的HttpServletRequest对象传入过滤器执行链中,在后面传入的request对象都会是增强的HttpServletRequest对象
  chain.doFilter(myReq, response);
  
 }
 @Override
 public void destroy() {}
}

2. 文件上传原理过程

1. JavaWeb中实现文件上传:

客户端:HTML页面需要一个

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~