JSP:9大默认对象
1、request:HttpServletRequest接口由服务器提供实现,并且在调用时自动注入
getParameter("username"):String/getParameterValues("hobby"):String[]
getRemoteAddr():String --封IP
setAttribute("name",Object)/getAttribute("name"):Object/removeAttribute("name") --请求转发
request.getDispatcher("001.jsp").forward(request,response) /.include实现请求转发 <jsp:forward/>
2、response:HttpServletResponse接口
由服务器提供实现,并且在调用时自动注入
setContentType("image/jpeg"); MIME
setHeader("Content-disposition","attachment;filename=abc.jpg")
response.sendRedirect("001.jsp")实现重定向
3、out:JspWriter
PrintWriter out=response.getWriter();
用于封装服务器对客户端的输出字符流
print/println
4、config:ServletConfig接口 配置
由服务器提供实现,并且在调用init时自动注入
getInitParameter("参数名"):String
配置的方法:
<init-param>
<param-name>rowsPerPage</param-name>
<param-value>2</param-value>
</init-param>
5、exception:Throwable类型 --isErrorPage=true
用户获取出现的异常信息getMessage():String toString():String
6、application:ServletContext接口
getServletContext()--HttpServlet父类提供
实现跨用户数据共享(注意线程安全问题) --页面计数器
setAttribute/getAttribute/removeAttribute
getInitParameter("参数名"):String 上下文
配置方法:
<context-param>
<param-name>appName</param-name>
<param-value>123456</param-value>
</context-param>
getRealPath("upload/"):String获取应用部署后的绝对路径 request[不建议使用]
log("key",exception)使用系统日志记录异常信息
7、page:Object类型
用于指代当前对象,类似于this
8、session:HttpSession 接口
相关页面的配置
<%@ page session="true" %>访问当前页面有关联的session
在Servlet中创建session对象
request.getSession()/(boolean):HttpSession
request.getSession()相当于request.getSession(true)意思是有相关的session则重用,如果没有则新建
request.getSession(false)意思有相关的session则重用,没有则返回null不会新建
用于实现用户的服务器端跟踪
setAttribute("name",Object)/getAttribute("name"):Object/removeAttribute("name")
Cookie:JSESSIONID=C4153B4C90F88AA63F5B83034635A5CE
session.getId():String获取session的id值
session.getServletContext():ServletCotnext
session.invalidate():void 销毁session对象
session相关的配置 web.xml
<session-config>session的超时设置,单位为分钟;tomcat默认就是30分钟
<session-timeout>30</session-timeout>
</session-config>
如果应用系统的安全性高则可以设置的较短些;如果应用的友好性强则设置长些。具体设置需要参照并发量的大小和相关的服务器硬件配置
9、pageContext:PageContext抽象类型 页面上下文
可以操作page范围中的数据
setAttribute("name",Object)/getAttribute("name"):Object/removeAttribute("name")
注意:Servlet中没有对应的获取方法
直接操作session的attribute,实际上就是额外添加一个参数用于指定对应的范围
pageContext.setAttribute("name", new Date(),PageContext.SESSION_SCOPE); //另外有3个常量分别是
page_scope request_scope和 application_scope
<%=session.getAttribute("name") %>
<%=pageContext.getAttribute("name",PageContext.PAGE_SCOPE) %>
pageContext.findAttribute("name"):Object用于实现在4大范围中查找指定名称的存放数据,
从小到大,如果找到了则立即返回,不会继续查找.page--request--session--application--null