1、JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象。例如:out对象
<% int[] value={60,70,80}; for(int i:value){ out.println(i); } %>
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对象具有请求域,即完成客户端的请求之前,该对象一直有效。
常用方法如图所示
注:虚拟路径默认与项目名称相同,但是可以通过选中项目>选择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地址不会改变。