1:什么是JSP内置对象
JSP内置对象是 Web 容器创建的一组对象
eg:
<% int[ ] value = { 60, 70, 80 }; for (int i : value) { out.println(i); } %>
2:JSP内置对象包括request对象、response对象、session对象、out对象、application对象、page对象、exception对象、pageContext对象、config对象。这些对象在客户端和服务器端交互的过程中分别完成不同的功能。
1.Request对象
Request对象是javax.servlet.http.HtupServletRequest类的实例。代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。比如表单中的数据、网页地址后带的参数等。
2.Response对象
Response对象是javax.servlet.http.HttpServletResponse类的实例。代表响应对象,主要用于向客户端发送数据。
3.Out对象
Out对象是javax.servletjspjspWriter类的实例。主要用于向客户端浏览器输出数据。
4.session对象
Session 对象是javax.servlet.htp.Http session类的实例。主要用来保持在服务器与一个客户端之间需要保留的数据,比如在会话期间保持用户的登录信息等,会话状态维持是Web应用开发者必须面对的问题。当客户端关闭网站的所有网页或关闭浏览器时,session对象中保存的数据会自动清除。由于Htp协议是一个无状态协议,不保留会话间的数据,因此通过session对象扩展了htp的功能。比如用户登录一个网站之后,登录信息会暂时保存在session对象中,打开不同的页面时,登录信息是可以共享的,一旦用户关闭浏览器或退出登录,就会清除session对象中保存的登录信息。
5.Application对象
Application对象是javax.servlet.ServletContext类的实例。主要用于保存用户信息,代码片段的运行环境;它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享。
6.PageContext对象
PageContext对象是javax.servlet.jsp.PageContext类的实例。用来管理网页属性,为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由JSP容器来完成的。
7.Config对象
Config对象是javax.servlet.ServletConfig类的实例。是代码片段配置对象,表示Servlet的配置。
8.Page(相当于this)对象
Page对象是javax.servlet.jsp.HttpJspPage类的实例。用来处理JSP网页,它指的是JSP页面对象本身,或者说代表编译后的servlet对象,只有在JSP页面范围之内才是合法的。
9.Exception对象
Exception对象是java.lang.Throwable类的实例。处理JSP文件执行时发生的错误和异常只有在JSP页面的page指令中指定isErrorPage=“true”后,才可以在本页面使用exception对象。
3:JSP内置对象request
request对象主要用于处理客户端请求
客户端 请求 request对象 获取请求的信息使用 服务器
4:request对象常用方法
String getParameter(String name)
根据表单组件名称获取提交数据
String[ ] getParameterValues(String name)
获取表单组件对应多个值时的请求数据
void setCharacterEncoding(String charset)
指定每个请求的编码
RequestDispatcher getRequestDispatcher(String path)
返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求
5:JSP内置对象response
response对象用于响应客户请求并向客户端输出信息
从服务器中检索信息 响应
服务器————————————response对象————————客户端
页面重定向 void sendRedirect(String location) 客户端将重新发送请求到指定的URL
6:转发的作用
在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理
7:转发的实现
RequestDispatcher对象的forward()方法
8:转发:
转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递客户端浏览器的地址栏不会显示转向后的地址
重定向:
重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向在地址栏中可以显示转向后的地址
9:会话
一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程
同一个session对象sessionid相同
10:JSP内置对象session
String getId():
获取sessionid
void setMaxInactiveInterval(int interval):
设定session的非活动时间
int getMaxInactiveInterval():
获取session的有效非活动时间(以秒为单位)
void invalidate():
设置session对象失效
void setAttribute(String key, Object value):
以key/value的形式保存对象值
Object getAttribute(String key):
通过key获取对象值
void removeAttribute(String key):
从session中删除指定名称(key)所对应的对象
11:session与窗口的关系:
每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)
通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
12:使用session实现访问控制
在新闻发布系统中,增加访问控制功能 提供用户登录功能 管理员有权对新闻实现增、删、改的操作
在控制页面获取用户请求的登录信息进行验证
session.setAttribute("login",name);
在新闻发布系统新闻发布页面增加登录验证
(String)session.getAttribute("login")
访问控制效果验证,步骤如下:
直接在浏览器地址栏中输入URL,访问系统首页
通过登录页面进入系统首页面
重新开启一个新会话窗口,直接访问系统首页面
13:session对象的失效
手动设置失效:invalidate()
超时失效
通过setMaxInactiveInterval( )方法,单位是秒
<% session.setAttribute("login","admin"); session.setMaxInactiveInterval(600); response.sendRedirect("admin.jsp"); %>
通过设置项目的web.xml或Tomcat目录下的/conf/web.xml文件,单位是分钟
<session-config> <session-timeout>10</session-timeout> </session-config>
14:include指令
可以将一些共性的内容写入一个单独的文件中,然后通过include指令引用该文件
创建登录验证文件 loginControl.jsp
<% String login = (String) session.getAttribute("login"); if (login == null) { response.sendRedirect("index.jsp"); return; } %>
在后台首页面中使用include指令引用登录验证文件
<%@ include file="loginControl.jsp" %>
15:JSP内置对象application
application实现用户之间的数据共享
application对象的常用方法
void setAttribute(String key, Object value):
以key/value的形式保存对象值
Object getAttribute(String key):
通过key获取对象值
String getRealPath(String path);
返回相对路径的真实路径
16:page作用域指本JSP页面的范围
在一个页面范围内有效,通过pageContext对象访问
17:request作用域内的对象则是与客户端的请求绑定在一起
在一个服务器请求范围内有效
18:session作用域:一次会话
在一次会话范围内容有效
19:application作用域:面对整个Web应用程序
在一个应用服务器范围内有效
20:cookie是Web服务器保存在客户端的一系列文本信息
cookie的作用
对特定对象的追踪 实现各种个性化服务 简化登录
安全性能
容易泄露信息
21:在JSP中使用cookie
创建cookie对象
Cookie newCookie = new Cookie(String key, String value);
写入cookie
response.addCookie(newCookie);
读取cookie
Cookie[] cookies = request.getCookies();
22:cookie对象的常用方法:
void setMaxAge(int expiry):
设置cookie的有效期,以秒为单位
void setValue(String value):
在cookie创建后,对cookie进行赋值
String getName():
获取cookie的名称
String getValue():
获取cookie的值
int getMaxAge():
获取cookie的有效时间,以秒为单位
23;cookie与session的对比:
session:
在服务器端保存用户信息,
session中保存的是Object类型
随会话的结束而将其存储的数据销毁
保存重要的信息
cookie
在客户端保存用户信息
cookie保存的是 String类型
cookie可以长期保存在客户端
保存不重要的用户信息
24:JavaBean的优势
解决代码重复编写,减少代码冗余 功能区分明确 提高了代码的维护性
25:从JavaBean的功能上可以分为
封装数据, 封装业务
26:封装数据的JavaBean
将属性声明为私有属性,无参的共有构造方法,公有的设置属性值方法setXxx(),公有的获取属性值方法getXxx()
使用工具自动生成getter/setter方法: Alt+Shift+S -> Generate Getters and Setters