一、JSP九大内置对象(自带的,不需要new 也能使用的对象): 1. out:输出对象,向客户端输出内容 2. request: 请求对象;存储“客户端向服务端发送的请求信息” 1)String getParameter(String name):根据请求的字段名key,返回字段值value 2)String[] getParameterValues(String name):根据请求字段名key,返回多个字段值value 常用于 (checkbox) 3)void setCharacterEncoding(“编码格式utf-8”) :设置请求编码 (tomcat7及以前默认iso-8859- 1tomcat8以后是utf-8) 4)getRequestDispatcher(“b.jsp”).forward(request,response); 请求转发 的方式跳转页面 A->B 5)ServletContext.getServerContext() :获取项目的ServletContext对象 3. response 响应对象 4. session 会话对象 5. application 全局对象 String getContextPath()虚拟路径 String getRealPath() 绝对路径(虚拟路径相对的绝对路径) 6. pageContext 7. page 当前JSP页面对象(相当于java中的this) 8. exception 异常对象 9. config 配置对象(服务器配置信息)
二、四个范围对象: a) pageContext 当前页面有效(页面跳转后无效) b) request 同一次请求有效;其他请求无效(请求转发后有效;重定向后无效) c) session 同一次会话有效 (无论怎么跳转都有效;关闭/切换浏览器后无效;从登陆->退出之间都有效) d) application 全局变量:整个项目运行期间都有效(切换浏览器 仍然有效);关闭服务和项目无效 以上四个范围对象,通过setAttribute()赋值,通过getAttribute()取值; 以上范围对象,尽可能使用最小的范围。因为对象的范围越大,造成的性能损耗越大。
三、提交方式 get提交方式:method=”get” 和地址栏、超链接等请求方式 默认都属于get提交方式 get和post请求方式的区别: a. get方式在地址栏显示请求信息(地址栏容量是有限的,一般为4KB-5KB) b. 文件上传操作必须是post 推荐使用post 统一请求的编码 request Get方式请求 如果出现乱码,解决: 修改server.xml,一次性的更改Tomact默认get提交方式的编码(utf-8) URIEncodeing=”UTF-8 Post请求方式修改方式: Resquest.setCharacterEncoding(“utf-8”);
请求转发重定向地址栏是否改变不变改变是否保留第一次保留不保留请求的次数12四.、session(服务端) Cookie(客户端,不是内置对象):Cookie是由服务端生产的,再发送给客户端保存。 相当于本地缓存的作用; 作用:提高访问服务端的效率,但是安全性较差。 Cookie:name=value Javax.servlet.http.Cookie Public Cookie(String name,String value) String getName();获取name String getValue();获取value void setMaxAge(int expiry);最大有效期(秒)
服务端准备Cookie: Response.addCookie(Cookie cookie) 页面跳转(转发,重定向) 客户端获取cookie:request.getCookies(); a. 服务端增加cookie:response对象;客户端获取对象:request对象 b. 不能直接获取某一个单独对象,只能一次性将全部的cookie拿到
Session机制: 客户端第一次请求服务端时,(jsessionid-sessionid)服务端会产生一个session对象(用于保存该客户的信息并且每个session对象都会有一个唯一的sessionId(用于区分其他session)); 服务端也会产生一个cookie,并且该cookie的name=JSESSIONID,vlues=服务端sessionId的值;然后服务端会在响应客户端的同时将该cookie发送给客户端,至此客户端就有了一个cookie(JSESSIONID);因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID-sessionID) 客户端第二次/n次请求服务端时,服务端会先用客户端cookie种的JSESSIONID去服务端的session中匹配sessionId,如何匹配成功(cookie jsessionid和session sessionid)说明此用户不是第一次访问,无需登录。 cookie和session的区别:
sessioncookie保存的位置服务端客户端安全性较安全较不安全保存的内容ObjectStringrequest.getRequestDispatcher和response.sendRedirect的区别: request.getRequestDispatcher是请求转发,前后页面共享一个request,在服务端运行,可以是servlet和jsp。 response.sendRedirec是重定向,前后页面不是一个request,可以是任意url,适合无值跳转。
tomact服务器将jsp翻译过来的Java代码存放在work\Catalina\localhost目录下,然后进行编译形成class文件,第一次访问jsp页面比较慢,因为要进行翻译和编译,第二次及以后就直接访问class文件,比较快了。这也同时说明了为什么要给Tomact服务器进行jdk环境变量配置了。