JSP的九大内置对象
1.JSP内置对象:就是不用自己定义,直接拿来使用的对象。
2.内置对象一共有9个,可以在web服务器解析jsp后得到的java源文件中看到。
例如,有一个jsp页面如下:
访问该jsp页面后,会生成一个java源文件,如下:
为了生成第九个内置对象,我们需要修改index.jsp:
再次查看java源文件:
注意:
(1)exception内置对象,需要在jsp文件中添加:<%@page isErrorPage="true"%>
才能在java源文件中看到它。
(2)这9大内置对象,只能在jsp页面中使用。
(3)在jsp文件的第一行所写的代码,会出现在java源文件的内置对象定义之后,所以整个jsp页面,都能访问任何内置对象。
3.JSP九大内置对象:
pageContext
request
session
application
response
out
exception
page
config
request内置对象
1.通过http协议我们可以知道一个浏览器向服务器发起请求的时候,一共会发出以下信息:
(1)请求行
(2)请求头
(3)请求体
a)如果请求方式是post,且有参数,那么参数就在请求体里面。
地址栏上看不见参数
b)如果请求方式是get,且有参数,那么参数就是url后面,用?隔开。
例如:http://localhost:8080/kk/index.jsp?a=111&b=222
2.客户端发送给服务器的所有数据,所有信息,都会被封装在request内置对象中,也就是说,请求行+请求头+请求体–>request。
3.学习request就是学习HttpServletRequest类的方法:
4.编码和解码复习:
编码:字符–>对应的数字
解码:数字–>对应的字符
5.有的时候,jsp提交的中文,在request获取以后,变成乱码了:
(1)当客户端提交表单数据的时候,不是直接把input框中的字符轮廓发送给服务器,而是把input框中的字符编码成对应的数字,浏览器在对input框中的字符编码时,查询的是当时设置里选中的那个码表utf-8。
(2)服务器在接收到客户端传来的数字后,就会解码,在request.getParameter("name");
这个方法的内部,就会自动解码,request的码表如果没有设置,就是null,则web服务器会默认使用iso-8859-1码表来解码。此时编码用的是utf-8,解码用的是iso-8859-1,所以得到的就是乱码。
6.解决中文乱码问题方法1:
解决中文乱码问题方法2:
方法2结论:
(1)表单提交方式必须是post;
(2)request.setCharacterEncoding("编码表名");
第二种用的比较多,因为方便。
以后制作表单,method必须给成post。
解决中文乱码问题用到了request的两个方法:
request.setCharacterEncoding();
request.getCharacterEncoding();
7.request获取所有请求参数的名字集合的方法:
8.request的方法:
request.setAttribute(String key,Object value)在request范围中设置一个属性
request.getAttribute(String key)从request范围中获取一个属性。
(request范围参见后面重定向部分request生命周期图)
注意:
在一个请求范围内设置的属性,在同一个请求范围内能获取,在另外一个新请求范围中不能获取。
response内置对象
1.response内置对象:响应内置对象。
2.我们知道,客户端传递给服务器的数据,都被封装进request内置对象中了;反过来,服务器发送给客户端的所有数据,都会被先封装进response对象中,再从response中取出来,制作一个http响应。
3.response的方法:
getWriter();
用于获