内置对象 | 所属类 |
pageContext | javax.servlet.jsp.PageContext |
request | javax.servlet.http.HttpServletRequest |
response | javax.servlet.http.HttpServletResponse |
session | javax.servlet.http.HttpSession |
config | javax.servlet.ServletConfig |
application | javax.servlet.ServletContext |
out | javax.servlet.jsp.JspWriter |
page | java.lang.Object |
exception | java.lang.Throwable |
JSP的内置对象在JSP中非常重要,这些内置对象是由WEB容器创建出来的,所以用户不用自己创建。
主要的几个内置对象有:
(1)request : javax.servlet.http.HttpServletRequest,表示客户请求。
具体用法:request.getParameter("name")等。
(2)response:javax.servlet.http.HttpServletResponse,表示服务器回应。
(3)pageContext:javax.servlet.jsp.pageContext,表示JSP页面。
(4)session:javax.servlet.http.HttpSession,表示一次会话。
(5)application:javax.servlet.servletContext,表示所有用户共享信息。
(6)out:javax.servlet.jsp.jspWriter,写入页面内容。
(7)page:表示一个页面的实例。
(8)config:javax.servlet.servletConfig,表示配置文件信息。
(1)page范围(pageContext):一页中有效,跳转即无效。
(2)request范围:服务器跳转有效,客户端跳转无效。
(3)session范围:跳转有效,新开浏览器无效。
(4)application范围:所有用户有效,重启服务器无效。
这四个对象有3个方法:
(1) void setAttribute(String key,Object o); //设置属性
(2) Object getAttribute(String key); //取得后要向下转型。
(3) void removeAttribute(String key); //删除属性
举例:
pageContext.setAttribute("name","xiazdong"); //只能在单个页面中进行保存
String name = (String)pageContext.getAttribute("name"); //换了一个页面后就无法取得
注意:尽可能在满足功能的前提下,将属性设置的保存范围尽可能的小。这样能够提高性能;
request对象是接收客户端发来的信息,而客户端发来了头信息、内容、传递方式、cookie。
常用方法:
(1)request.getParameter(String name):取得name元素的值。 取得来源:(1)地址重写(2)表单提交
(2)Enumeration enu = request.getParameterNames():取得全部的参数的名称,通过迭代器遍历。
补充:Enumeration的用法:
enu.hasMoreElements();
enu.nextElement();
(3)String[] strs = request.getParameterValues(String name):用于取得比如checkbox的多项选择。
(4)Enumeration enu = request.getHeaderNames():获得全部头信息的名字。
(5)String str = request.getHeader(String name):获得名字为name的头信息的内容。
(6)String str = request.getMethod():获得是post或get.
(7)request.setCharacterEncoding(String ):统一request的编码。
(8)request.isUserInRole(String name); 用于用户验证角色
(9)Cookie[] c = request.getCookies():获得全部的cookie。
Enumeration enu = request.getHeaderNames();
while(enu.hasMoreElements()){
String name = (String)enu.nextElement();
String value = request.getHeader(name);
//显示name和value即可
}
实例2:获得客户端IP地址
String ip = request.getRemoteAddr();
tomcat增加新用户和新权限的方法:
(1)在tomcat/conf/tomcat-users.xml可以设置,参照admin配置即可,然后重启tomcat服务器,完成新用户和权限的载入。
(2)在web.xml进行设置,使得成为登录网页前会跳出窗口输入用户名、密码。具体请见:http://blog.csdn.net/xiazdong/article/details/6894889
最明显的区别是地址栏的区别,post传递时,地址栏没有任何变化,而get传递,地址栏会显示传递的信息,因此get传递的信息有限。
表示回应客户端的对象。
(1)addCookie(Cookie):添加cookie
(2)setHeader(String name,String value):设置头信息。
(3)sendRedirect():重定向,类似于客户端跳转。
常用用法:
(1)定时刷新:response.setHeader("refresh","2"):2秒刷新一次。
(2)定时跳转:response.setHeader("refresh","2;URL=hello.jsp");2秒后跳转到hello.jsp。
(3)客户端跳转:response.sendRedirect("hello.jsp");
注意:以上(2)用法可能会失败,原因是用户在2秒内刷新了页面,导致refresh失效;
应用:
实现用户登录后的“3秒后跳转,如果没有跳转请点击 这里”;
服务器跳转和客户端跳转的区别:
服务器端跳转是立刻跳转,即页面执行到跳转语句后就不执行后面的语句;
客户端跳转是执行完整个页面后才跳转。
将用户的信息保存为一个cookie,存储在客户端,每次request时,都会把cookie发送到服务器端。
response.addCookie(Cookie e);添加cookie。
Cookie位于javax.servlet.http.cookie中。
常用方法:
(1)Cookie c = new Cookie("name","value"):创建一个新cookie。
(2)c.setMaxAge(int seconds):设置cookie最长寿命,因为原本cookie保存在浏览器中,如果浏览器关闭,cookie丢失。
(3)c.getName():获得名字。
(4)c.getValue():获得值。
Cookie[]cs = request.getCookies();获得cookie
session常用方法:
(1)String getId():获得session id。session id类似于Cookie的JSessionId,是服务器自动分配的;
(2)session.setAttribute("",""):设置属性。
(3)session.getCreationTime():获得创建时间。
(4)session.getLastAccessedTime():获得最后访问时间。
(5)session.isNew():这个session是否是新的,即判断session id。
(6)session.invalidate():把session的属性设置全部清空。
登录-注销页面:
(1)使用session.setAttribute()注册。
(2)使用session.getAttribute()判断是否已经注册。
(3)使用session.invalidate(); 注销;
如果想要保存session id,则需要进行持久化操作,具体请见:http://blog.csdn.net/xiazdong/article/details/6894945
常用方法:
(1)getRealPath(path):获得真实路径。
(2)getContextPath():获得虚拟路径。
application==this.getServletContext()
先从配置文件谈起,在每个web应用中,都有一个WEB-INF文件夹,这个文件夹是很安全的,不能被其他人看到。
如果将一个hello.jsp文件放到WEB-INF中,如果能够让其能够被访问。
答案就是在WEB-INF/web.xml设置即可,内容如下:
<servlet>
<servlet-name>he</servlet-name>
<jsp-file>/WEB-INF/hello.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>he</servlet-name>
<url-pattern>hello</url-pattern>
</sevlet-mapping>
重启服务器后,则在地址栏输入http://localhost:8080/test/hello即可。
config常用方法:
(1)getInitParameterNames();
(2)getInitParameter(String name);
什么是初始化参数呢?
初始化参数在web.xml中进行配置,形式如下:
<servlet>
<init-param>
<param-name>name</param-name>
<param-value>value</param-value>
< /servlet></init-param>
表示JSP上下文,可以通过这个实例,取得request\response\session\<jsp:forward>等。
(1)pageContext.forward(String);
(2)pageContext.include(String);
(3)pageContext.getServletConfig();
(4)pageContext.getServletContext();
(5)pageContext.getRequest();
(6)pageContext.geResponse();
(7)pageContext.getSession();
也就是说,只要有了pageContext对象,就能完成一切内置对象的功能;
使用函数:pageConext.setAttribute("name","value",int SCOPE);
1.设置page范围
pageConext.setAttribute("name","xiazdong",PageConext.PAGE_SCOPE);
2.设置request范围
pageConext.setAttribute("name","xiazdong",PageConext.REQUEST_SCOPE);
3.设置session范围
pageConext.setAttribute("name","xiazdong",PageConext.SESSION_SCOPE);
pageConext.setAttribute("name","xiazdong",PageConext.APPLICATION_SCOPE);
转自:http://blog.csdn.net/xiazdong/article/details/6848382