JSP内置对象(包括request和response)以及解决url传中文参数出现乱码问题

一、内置对象简介

1、JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象。例如:out对象

<%
    int[] value={60,70,80};
    for(int i:value){
         out.println(i);
    }
%>

2、JSP九大内置对象:
out,request,response,session,application(五大常用对象)

Page,pageContext,exception.config(四个不太常用对象)


out是JspWriter 的实例,是向客户端输出内容的常用对象.
常用方法:
1.void println() 向客户端打印字符串.
2.void clear() 清除缓冲区,在flush之后调用会抛出异常,抛出异常后,之后的内容不会被执行
3.void clearBuffer() 清除缓冲区,在flush之后调用不会抛出异常.
4.void flush() 将缓冲区内容输出到客户端.
5.int getBufferSize() 
6.int getRemaining()
7.boolean siAutoFlush()
8.void close()


表单有两种提交方式:get与post。定义在<form action="dologin.jsp" name="loginForm" method="提交方式***"></form> 动作/名称等顺序无所谓。
1.get:以【明文】方式,通过URL提交数据,数据在URL中【可以看到】。提交数据最多不超过【2KB】。安全性较低,但效率比post方式高。适合提交数据量不大,且安全要求不高的数据:比如:搜索、查询等功能。
2.post:将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性高的用户信息。如:注册、修改、上传等功能。


request对象
1、request用于封装客户端的请求信息。
2、它是HttpServletRequest类的实例。
3、request对象具有请求域,即完成客户端的请求之前,该对象一直有效。

常用方法如图所示

JSP内置对象(包括request和response)以及解决url传中文参数出现乱码问题_第1张图片



注:虚拟路径默认与项目名称相同,但是可以通过选中项目>选择Properites>MyEclipse>Web>Web-Context-root 来修改虚拟路径(修改虚拟路径不影响项目名,但是需要重新部署,webapps文件夹中的项目名字使用的是虚拟路径);地址栏中访问资源要用虚拟路径。例如对于http://localhost:8080/JspStudy/request.jsp,

request.getRealPath("request.jsp")则返回F:\apache-tomcat-7.0.26\webapps\JspStudy\request.jsp,

request.getContextPath()则返回/JspStudy


解决url传中文参数出现乱码问题:

URL传中文参数不能用setCharacterEncoding("utf-8")解决,这种方式仅能解决通过表单传中文参数导致乱码的问题

URL传中文参数乱码的解决方案:
tomcat  -> conf -> server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" 【URIEncoding="utf-8"】添加这一句,修改服务器编码方式
/>


response对象


注:使用PrintWriter 输出的字符串 总是先于 内置的JspWriter对象(out对象)输出的字符串,例如:


输出的结果为



可以使用out.flush()来避免这种情况


结果为


即先强制刷新缓冲区,输出缓冲区中的内容



请求重定向:

服务端responce.sendRedirect("xx.jsp")重定向。【客户端行为】:即客户端会访问两次,第一次访问后会立即跳转到第二个重定向页面上,【从本质上讲等于两次请求】,而前一次的请求封装的request对象不会保存,地址栏的URL地址会改变。

请求转发:

服务端request.getRequestDispatcher("xx.jsp").forward(request,response)请求转发。forward(request,response)用于保存内置对象request和response。【服务器行为】:服务器会代替客户端去访问转发页面,【从本质是一次请求】,转发后请求对象会保存,地址栏的URL地址不会改变。



你可能感兴趣的:(Web,jsp)