所有的访问请求都应该发送到servlet,并通过servlet间接的访问jsp。jsp页面不应该允许直接访问。有几种方法可以保护jsp页面不会被直接访问到。
1,把jsp页面放到WEB-INF目录下,这样一来,即使用户通过浏览器直接输入把些jsp页面的URL地址也无法访问到它们。但是该方法在不同服务器中有不同的效果。
2,用过滤器保护那些没有存放在WEB-INF目录里的JSP页面。只要把以.jsp结尾的URL全部重定向到用户页面去就行了。
3,通过web.xml文件里的security-constraint元素把所有的JSP页面者保护起来,只允许那些是特定的合法角色的用户访问它们。
以上代码不允许任何直接访问JSP页面。只有none角色的用户才能访问以.jsp结尾的URL,也就是说,如果没有一个用户是这个角色,那就没人能够直接访问这些JSP页面。
也可以定义多个目录
*<auth-constraint/>表示没有用户可以访问
1,把jsp页面放到WEB-INF目录下,这样一来,即使用户通过浏览器直接输入把些jsp页面的URL地址也无法访问到它们。但是该方法在不同服务器中有不同的效果。
2,用过滤器保护那些没有存放在WEB-INF目录里的JSP页面。只要把以.jsp结尾的URL全部重定向到用户页面去就行了。
3,通过web.xml文件里的security-constraint元素把所有的JSP页面者保护起来,只允许那些是特定的合法角色的用户访问它们。
<security-constraint>
<web-resource-collection>
<web-resource-name>Direct Access to Jsps</web-resource-name>
<url-pattern>*.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>none</role-name>
</auth-constraint>
</security-constraint>
以上代码不允许任何直接访问JSP页面。只有none角色的用户才能访问以.jsp结尾的URL,也就是说,如果没有一个用户是这个角色,那就没人能够直接访问这些JSP页面。
也可以定义多个目录
<security-constraint>
<web-resource-collection>
<web-resource-name>Direct Access to Jsps</web-resource-name>
<url-pattern>/demo0/*</url-pattern>
<url-pattern>/demo1/*</url-pattern>
<url-pattern>/demo2/*</url-pattern>
<url-pattern>/demo3/*</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
*<auth-constraint/>表示没有用户可以访问