您的位置:首页 > 运维架构 > Tomcat

Tomcat中如何将JSP解析为Servlet

2014-07-29 13:46 363 查看
找到tomcat,lib目录先的jsper.jar,其中有一个Service方法:1.该方法将JSP文件变成HttpJspBase的子类。2.子类重写_jspService()方法。为什么会加一个"_",其它的方法有jspInit(),jspDestory().3.一个页面就对应一个Servlet。看到是HTTP代码就是加上out.println(),如果是<%%>就原封不动的放到JAVA代码中,其他若干功能,比如调用组件库等等。其实这个过程比较复杂。

Tomcat的访问分为两种:1.动态访问,.jsp是动态访问。2.静态访问,直接将请求的内容通过HTTP返回。

动态访问例子:

在SERVER下面的web.xml文件中找到下面的内容

<servlet-mapping>

<servlet-name>jsp</servlet-name>

<url-pattern>*.jsp</url-pattern>

</servlet-mapping>

然后找到对应的处理类

<servlet>

<servlet-name>jsp</servlet-name>

<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

<init-param>

<param-name>fork</param-name>

<param-value>false</param-value>

</init-param>

<init-param>

<param-name>xpoweredBy</param-name>

<param-value>false</param-value>

</init-param>

<load-on-startup>3</load-on-startup>

</servlet>

说明后缀为.jsp请求的内容是被上面的具体实现类来处理的,上面类的主要作用就是将.jsp文件转换为Servlet然后由Servlet来提供对用户的反馈。

TIP:修改为Listing为true可以加快调试速度。

修改tomcat的web.xml中listing参数为true可以让访问的时候,列出所有的可显示文件

<servlet>

<servlet-name>default</servlet-name>

<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

<init-param>

<param-name>debug</param-name>

<param-value>0</param-value>

</init-param>

<init-param>

<param-name>listings</param-name>

<param-value>true</param-value>

<init-param>

<load-on-startup>1</load-on-startup>

</servlet>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: