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


    一、客户端请求服务器的数据有乱码
    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定位一个路径
     
     
     
     
     
  • 相关阅读:
    .net 正在中止线程
    jQuery ajax
    jQuery对checkbox的各种操作
    oracle实验39:触发器
    oracle实验21:建立简单的表,并对表进行简单的DDL操作
    oracle实验20:子查询
    oracle实验18-19:表的连接查询
    oracle实验42:编写包package
    oracle实验25:Sequence序列
    oracle实验17:分组统计函数
  • 原文地址:https://www.cnblogs.com/aknife/p/10849730.html
Copyright © 2020-2023  润新知