JSP相关技术 二、JSP9个内置对象
来源:互联网 发布:java int转char数组 编辑:程序博客网 时间:2024/05/19 13:17
一、JSP9个内置对象(都是servletApi接口的实例)
编写jsp时要站在servlet和jsp两个角度看问题,查看jsp对应的servlet可以发现jsp9个内置对象,要么是_jspServlet的形参,要么是_jspServlet的局部变量,所以可以在jsp页面内直接使用这些对象,不要在jsp中声明这些变量,否则系统将提示找不到这些方法。
1、B/S模式用户浏览器请求客户端步骤:
1.启动单独线程
2.使用IO流读取用户请求的二进制流数据
3.从请求数据中解析参数
4.处理用户请求
5.生产响应数据
6.使用IO流想客户端发送请求数据
1.2.6是通用的,Web服务器调用servlet的_jspSerices方法来完成3.4.5,而Web服务器则负责完成多线程、网络通信等底层功能
为了解决jsp和servlet之间的通信服务器提供了4个类似Map的结构:
1.page:作用本个页面
2.request:作用本次请求
3.session:作用本次会话
4.application(即ServletContext实例):作用本应用 ,用于保存Web应用的状态。
1、application:作用在整个web应用中
//XML中配置参数
<context-param>
<param-name>URL</param-name>
<param-value>jdbc:mysql://localhost:3307/webdemo</param-value>
</context-param>
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
//在jsp中获取:
request.getInitParameter("URL");
//在jsp和servlet之间通信
application.setAttribute("name","value");
application.getAttribute("name");
//servlet中 application对象为servletConfig实例
ServletContext sc = getServletConfig().getServletContext();
sc.getAttribute("name");
2、config:jsp的配置信息,但是jsp一般无需配置,servlet可以在xml中配置,作用比较大
//将configTest.jsp配置成config Servlet,并可以在configTest.jsp获取对应参数
<servlet>
<servlet-name>config</servlet-name>
<jsp-file>/configTest.jsp</jsp-file>
<init-param>
<param-name>age</param-name>
<param-value>20</param-value>
</init-param>
<init-param>
<param-name>name</param-name>
<param-value>joy</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>config</servlet-name>
<url-pattern>/config</url-pattern>
</servlet-mapping>
//configTest.jsp
内置对象age的值:<%=config.getInitParameter("age") %>
内置对象name的值:<%=config.getInitParameter("name") %>
3、Execption对象只在异常处理页面中才有效
4、out对象(是一个页面输出流,通常在页面上输出变量和常量)是jspWriter实例
5、pageContext(代表页面上下文,主要用于jsp之间的共享数据)
1. pageContext是pageContext的实例,提供了如下两个方法来访问page、request、session、application范围的变量
getAttribute(String name); //获取page范围内的name属性
getAttribute(String name,int scope); //获取page范围内的name属性
scope可以对应四个值:PageContext.PAGE_SCOPE、PageContext.REQUEST_SCOPE、 PageContext.SESSION_SCOPE、PageContext.APPLICATION_SCOPE
提供了对应的set方法
2.pageContext还可以用户获取其他内置对象:
ServletRequest getRequest():获取Request对象
ServletResponse getResponse():获取response对象
ServletConfig getServletConfig():获取config对象
ServletContext getServletContext(): 获取application对象
HttpSession getSession():获取session对象
6、request对象
1.获取请求头/请求参数
GET和POST区别
GET
POST
安全性
url后可以看到请求参数,不安全
参数放在请求头HTML HEADER中,相对安全
数据量
不大于2K
post请求参数不受限制,取决服务器的限制
method
默认或者get
指定post
2.提交的表单:每个有name的属性对用一个请求参数,如果多个表单域有相同的 name,生成的请求参数值是一个数组
同时可以设置表单域 disabled = "disabled"属性,使其不生成请求参数。
3.执行forward或include
//作用和使用jsp的动作指令include和forward一样
request.getRequestDispatch("a.jsp").forward(request,response);
request.getRequestDispatch("a.jsp").include(request,response);
7、response对象(用于服务器对客户端的响应)
1.out对象是jspWriter的子类可以响应输出字符流内容,response一般用来响应非字符内容
2.response可以用来重定向
response.sendRedirect("a.jsp");
转发forward
重定向redirect
执行forward依然是上一次请求
执行redirect生成第二次请求
所有原页面的请求参数、request范围内的属性全部存在
所有原页面的请求参数、request范围内的属性全部丢失
地址栏url不会变
重定向到目标url,相当于在地址栏输出url回车
3.增加cookie
//添加cookie
//创建cookie对象
Cookie cookie = new Cookie("username","joy");
//设置生存期限
cookie.setMaxAge(24*3600);
//向客户端增加cookie对象
response.addCookie(cookie);
//读取cookie
//获取本站上的所有cookie
Cookie[] cookies = request.getCookies();
//遍历客户端上的每个Cookie
if (cookies.length > 0) {
for (Cookie cookie: cookies) {
// if (!cookie.getName().equals("username")){
// out.println(cookie.getValue());
// }
out.println("Cookie:" + cookie.getName() + "value:" + cookie.getValue() + "</br>");
}
}
7、session对象(代表一次用户对话)
//用于设置和过去session的方法
setAttribute(String name, Object value);
getAttribute(String name)
session里面的值Object必须是可序列化的,因为session保存在服务器硬盘
8、session和cooke的区别
cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
阅读全文
0 0
- JSP相关技术 二、JSP9个内置对象
- JSP系列四:JSP9个内置对象
- JSP系列四:JSP9个内置对象
- JSP系列四:JSP9个内置对象
- JSP系列四:JSP9个内置对象
- JSP9个内置对象
- jsp9个内置对象
- JSP9个内置对象
- JSP9个内置对象
- JSP9个内置对象
- JSP9个内置对象
- JSP9个内置对象
- JSP9个内置对象
- JSP9个内置对象
- JSP9个内置对象
- JSP9个内置对象
- jsp9个内置对象
- jsp9个内置对象
- 各种排序
- python time模块获取当前时间
- 语义分割--Efficient Deep Models for Monocular Road Segmentation
- 全屏显示网页
- hdu6063 RXD and math(数学/打表)
- JSP相关技术 二、JSP9个内置对象
- hive与hbase的联系与区别
- FFMPEG 零基础编译过程
- MapReduce功能实现十---倒排索引(Inverted Index)
- zigbee协议栈OSAL之单播综合实验(第四天的补充)
- 2017杭电多校联赛第三场-Kanade's sum (hdu6058) 求第k大的数的和
- poj3370 抽屉原理
- spring security手动登录
- vector::erase & map::erase (C++11)