日期:2014-05-16  浏览次数:20425 次

JSP&Servlet(二)
JSP
一、容器如何处理JSP
(1)查看指令,得到转换信息
(2)创建一个HttpServlet子类
(3)如果page有import属性,在类中转换为import语句
(4)如果有声明,转换为类声明下面
(5)建立服务方法_jspServlet()
(6)将html,scriplet和表达式放入服务方法中,由PrintWriter输出
二、隐式对象对应的对象
out JspWriter(不能取代PrinterWriter)
application  ServletContext
request HttpRequest
response HttpResponse
config ServletConfig
session HttpSession
三、JSP生成的Servlet的API
(1)jspInit()
这个方法由init()调用,可以覆盖
(2)jspDestroy()
由Destroy()调用,可以覆盖
(3)_jspService()
由Service()调用,不可以覆盖
四、初始化JSP
为JSP配置Servlet初始化参数,只是<jsp-file></jsp-file>与Servlet的配置不同:
  <servlet>
  <servlet-name>Home</servlet-name>
  <jsp-file>/index.jsp</jsp-file>
  <init-param>
  <param-name>email</param-name>
  <param-value>xxxxx@gmail.com</param-value>
  </init-param>
  </servlet>
  <servlet-mapping>
  <servlet-name>Home</servlet-name>
  <url-pattern>index.jsp</url-pattern>
  </servlet-mapping>
覆盖jspInit()。调用jspInit()时,Java类已经变成Servlet,所以已经有ServletContext和ServletConfig供Servlet使用。在jspInit()中可以调用getServletContest()和getServletConfig()
<%!
  //函数要用声明,声明中不能直接使用隐式对象
  public void jspInit(){
  ServletConfig config = getServletConfig();
  String email = config.getInitParameter("email");
  ServletContext context = getServletContext();
  context.setAttribute("email", email);
  }
   %>
五、JSP中的属性
属性的三个作用域:request,application,session
三大指令:page,taglib,include
六、EL表达式
${application.email},用来替代表达式
七、JSP动作
动作更像一个标签
<jsp:include page="welcome.jsp"/>
<c:set var="rate" value="32"/>