版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cjmust/article/details/83186193
对重要变量的描述
1. request以及response
request和response是HttpServletRequest和HttpServletResponse的实例,但是在JSP当中响应对象存在着一些使用限制,例如:不应当调用getWriter和getOutputStream方法,因为JSP已经向响应中输出了一些内容,还有设置内容类型,字符编码,刷新,重置缓存…这些工作已经由JSP完成,如果重复执行可能会引发问题。
2. session
session是HttpSession的实例,可以通过page指令设置其开关,默认为打开,如果关闭的话则无法使用session变量
3. out
out是JspWriter的一个实例,所有的JSP当中都可以使用,可以在页面中直接输出内容;
但是为什么不用表达式或者直接写html呢?
4. application
application是javax.servlet.ServletContext
接口的一个实例,提供了对Web应用程序配置的访问:包括上下文初始化参数etc
例如:
<!-- web.xml配置 -->
<context-param>
<param-name>settingOne</param-name>
<param-value>foo</param-value>
</context-param>
<context-param>
<param-name>settingTwo</param-name>
<param-value>bar</param-value>
</context-param>
在JSP中直接可以取值
settingOne: <%= application.getInitParameter("settingOne") %>,
settingTwo: <%= application.getInitParameter("settingTwo") %>
5. config
config是javax.servlet.ServletConfig
接口的一个实例,该对象可以访问JSP Servlet的配置,例如Servlet初始化参数etc
6. pageContext
pageContext是javax.servlet.jsp.PageContext
类的一个实例,可以通过它获取各种内容,看Serivce代码的开头
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
7. page
page是java.lang.Object
的一个实例(说实话,我开始看代码的时候是一脸懵逼,这啥玩意)
它代表了JSP Servlet对象的this变量! 它可以强制转换为Servlet对象,只需要认为,page是this的代名词
8. exception
…
代码:
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
final java.lang.String _jspx_method = request.getMethod();
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");
return;
}
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
try {
response.setContentType("text/html;charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("\n");
out.write("<!DOCTYPE html>\n");
out.write("<html>\n");
out.write(" <head>\n");
out.write(" <title>Hello World Application</title>\n");
out.write(" </head>\n");
out.write(" <body>\n");
out.write(" Hello, World!\n");
out.write(" </body>\n");
out.write("</html>\n");
} catch (java.lang.Throwable t) {
if (!(t instanceof javax.servlet.jsp.SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try {
if (response.isCommitted()) {
out.flush();
} else {
out.clearBuffer();
}
} catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
else throw new ServletException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}