`

直接把JSP文件当做servlet来使用

阅读更多

1>在web.xml中配置servlet大家都比较熟悉,而且用得也比较多。

比如:

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>MyServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>1</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>
  
<servlet-mapping>
   <servlet-name>MyServlet</servlet-name>
   <url-pattern>/action/*</url-pattern>
</servlet-mapping>

 

2>除了直接配置servlet,还可以在web.xml中直接配置JSP,把JSP文件当做servlet来使用(JSP实际上就是一个servlet,只是需要由JSP容器生成对应的java代码)

 

配置方法如下(metadata-complete必须为false):

 

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="false">

  <servlet>
    <servlet-name>myjsp</servlet-name>
    <jsp-file>/index.jsp</jsp-file>
    <init-param>
      <param-name>data</param-name>
      <param-value>my configration</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>myjsp</servlet-name>
      <url-pattern>/myjsp</url-pattern>
  </servlet-mapping>

 

3>把JSP当做servlet来使用的目的

1)禁止直接访问JSP文件的时候,可以通过servlet mapping来间接访问

2)可以在web.xml中配置初始化参数,然后在JSP文件中获取

 

可以通过配置filter来禁止直接访问JSP文件:

<filter>
    <filter-name>CSRF</filter-name>
    <filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>
    <init-param>
      <param-name>entryPoints</param-name>
      <param-value>/html,/html/,/html/list,/index.jsp,/download.jsp</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CSRF</filter-name>
    <servlet-name>HTMLManager</servlet-name>
    <servlet-name>jsp</servlet-name>
</filter-mapping>

 

上面的entryPoints参数中指定的/index.jsp和/download.jsp表示,/index.jsp和/download.jsp是可以直接访问的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics