jsp学习之内置对象一

1.requset 对象

request.getHeader(”referer“),这个方法没用过,表示返回的客户端上一次从哪传来的,当从 a.jsp跳转到b.jsp时,在b调用时,及显示http://xxx/a.jsp。    假如直接访问http://xxx/a.jsp,调用就会返回null

2.在我们提交参数时,表单 如果action 为get,不安全,直接跟URL后面。用post 是将其作为头部中的信息传递。(http报文中的 请求数据块)

3.乱码问题 这个问题性价比就比较高了

接受客户端   request.setCharacterEncoding("utf-8"); 规定将请求发送过来的数据已utf-8编码,解决中文乱码。

还有可以编写一个filterservlet,暂时还未研究。

发送给客户端  response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码;

             request.setCharacterEncoding("utf-8");

                    A、设置服务器端的编码
                   response.setCharacterEncoding("utf-8”); 
                   B、通知浏览器服务器发送的数据格式
                    response.setContentType("text/html;charset=utf-8”);
                   C、浏览器使用utf-8进行解码
                这三步完美解决
4.路径问题

         "./":代表目前所在的目录。

         "../":代表上一层目录。

          以"/"开头:代表根目录。

form 表格的action 相对路径和绝对路径。
         绝对路径  并不推荐使用,当项目发布至其他服务器时绝对路径肯定就变了
          path=request.getContextPath() 得到的是 项目名  <%path%>/servlet/myservlet=127.0.0.1:8080/                    项目名/servlet/myservlet
相对路径 (相对于当前页面下 )(此处没有/,否则相当于绝对路径8080/之后)servlet/myservlet
        request.getContPath()  得到项目名,request.getRequestURI()  - /项目名/a.jsp 
        request的重定向路径 “request.getContPath()"/a.jsp
5.sendredirect 和forward http://www.cnblogs.com/linson0116/p/4277580.html

        运用sendRedirect()方法可以让你重定向到任何URL,而forward()方法只能重定向到同一个Web应用程序中的某个资源。

        表单form中的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如服务器根路径是http://localhost:8080/Test则提交至                         http://localhost:8080/uu;而Forward代码中的"/uu"则代表相对于WEB应用的路径。如http://localhost:8080/Test应用则提交至                             http://localhost:8080/Test/uu。

        

response.sendRedirect(url)跳转到指定的URL地址后,上个页面(跳转之前的原来页面)中的请求全部结束,原request对象将会消亡,数据将会消失。紧接着,当前新页面会新建request对象,即产生新的request对象。

【详细过程:redirect 会首先发一个response给浏览器,然后浏览器收到这个response后再发一个requeset给服务器,服务器接收后发新的response给浏览器。这时页面从浏览器获取来的是一个新的request。这时,在原来跳转之前的页面用request.setAttribute存的东西都没了,如果在当前的新页面中用request.getAttribute取,得到的将会是null。】

 request.getRequestDispatcher(url).forward(request,response)是采用请求转发方式,在跳转页面的时候是带着原来页面的request和response跳转的,request对象始终存在,不会重新创建。

【详细过程:forward 发生在服务器内部, 是在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来的,可能是在转页时己经用request.setAttribute在request里放了数据,在转到的页面就可以直接用request.getAttribute获得数据了。】




你可能感兴趣的:(java,web)