04 存在中文乱码_请求转发.重定向_路径问题

2019-05-13 07:12:50来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一、客户端请求服务器的数据有乱码
1.get方式请求
①修改tomcat/conf/server.xml,在<Connector> 标签中添加属性useBodyEncodingForURI="true"
②在获取请求数据之前,设置 request.setCharacterEncoding("utf-8");
2.post方式请求
在获取请求数据之前,设置 request.setCharacterEncoding("utf-8");
 
二、服务器返回给客户端的数据有乱码
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
}

 

请求转发

request.getRequestDispathcer("path").forward(reqeust,response);
 
请求转发的特点:
1.地址栏没有发生变化
2.用户只发起了一次请求
3.请求转发只能转发本服务器以内的资源
4.由于请求是同一个对象,所以可以利用该request做servlet之间数据的传输
 
 

重定向

response.sendRedirect("path")
 
重定向的特点:
1.地址栏会发生改变
2.用户发起了两次请求
3.重定向可以访问服务器以外的资源
4.重定向由于请求多次的,所以HttpServletRequest不是同一个对象,故不能使用它传递数据
 
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        //接受用户的用户名和密码
        String uname = request.getParameter("uname");
        String passwd = request.getParameter("passwd");
        
        //验证用户名和密码
        if(uname.equals("zhangsan") && passwd.equals("1234")){
            //去主页操作
            //请求转发
            request.getRequestDispatcher("index.jsp").forward(request, response);
            
        }else{
            //跳回登录页面,继续登录
            //重定向
            response.sendRedirect("login.html");
        }
  }

 

 
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            request.setAttribute("aaa", "bbb");
            request.getRequestDispatcher("des").forward(request, response);
            
     
    }

 

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        request.setAttribute("aaa", "ccc");
        
        response.sendRedirect("dest");
        //重定向的特点:
        //1.地址栏会发生改变
        //2.用户发起了两次请求
        //3.重定向可以访问服务器以外的资源
        //4.重定向由于请求多次的,所以HttpServletRequest不是同一个对象,故不能使用它传递数据
    }

 

路径问题
一、分析
1.找出一个url中的项目名称
项目名称前面的“/”是服务器地址,例:http://127.0.0.1:8080/
项目名称后面的“/”是项目地址,例:http://127.0.0.1:8080/proejctname/
二、判断
1.判断一次请求行为是谁发出的
如果是浏览器行为,则表示项目名称前面的“/”,即服务器地址
如果是服务器内部行为,则表示项目名称后面的“/”,即项目地址
 
1.服务器内部行为:请求转发
2.浏览器行为:重定向、页面中form提交、页面中a标签、js中通过location.href定位一个路径
 
 
 
 
 

原文链接:https://www.cnblogs.com/aknife/p/10849730.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:如何使用npm的部分用法以及npm被墙的解决方法

下一篇:新手该如何学习JavaScript ?