Web 安全目录
我们知道,在 web 工程下,必定有一个 WEB-INF 目录,所有 Web 工程中非 JSP 也就是所有的 Java 程序都会被部署到 WEB-INF 目录中执行。并且浏览器不能访问这个目录下面的资源。所以一些重要的文件我们可以放到这里。
JSP 映射文件的配置
映射文件的配置,是很好理解的,就是一个 jsp,配置一个新的访问路径。映射的配置在web.xml文件中完成。Web.xml文件叫做web工程的部署描述符,具体来说就是对Web工程进行一些配置。
如何配置一个 jsp 映射呢,我们在 web.xml 使用 servlet 标签,如下:
<servlet>
<!-- 给要配置的Servlet起别名,不能与其他的serlvet-name重复 -->
<servlet-name>webSafe</servlet-name>
<!-- 配置这个servlet对应的jsp在工程中的实际路径 -->
<jsp-file>/WEB-INF/webSafe.jsp</jsp-file>
</servlet>
<!-- 给指定的Servlet标签配置一个URL的映射地址 -->
<servlet-mapping>
<servlet-name>webSafe</servlet-name>
<!-- 配置的新的映射地址 -->
<url-pattern>/abc</url-pattern>
</servlet-mapping>
虽然无法访问 web-info 下的资源,但是我们可以通过以上方式建立新的映射虚拟路径访问/abc
。
这里流程可以这样理解,我们在地址栏输入 \abc
的时候,服务器它会找到 servlet-mapping 标签,看到 servlet-name 为 webSafe,然后再 servlet 标签找对应 servlet-name 叫做 webSafe 的,然后就可以找到对应的 jsp-file 文件了。
这里,一个 servlet 可以对应多个 servlet-mapping ,也就是多个映射地址。注意这里 servlet 标签下的 servlet-name 不能和其他的 servlet 标签重复。
web.xml 其他配置
- 配置错误页面
我们知道,输入地址有误会报 404,服务器有问题会报 500,这个时候我们要再报错的时候,让他去一个友好的错误提示页面,怎么做呢?如下使用 error-page 标签
<!-- 配置错误页面 -->
<!-- <error-page>
<error-code>404</error-code>
<location>/error/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/error.jsp</location>
</error-page> -->
- 配置 session 失效时间
我们可以再 web.xml 配置 session 多久失效,我这里举个 30 分钟的例子:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
- 配置初始化参数
这里还有内置对象 Config ,它主要用于 tomcat 启动的时候做些什么,它主要有两个方法
String getInitParameter(String name)
:根据参数名称获得初始化配置的参数Enumeration getInitParameterNames()
:获得所有初始化配置参数的名称
这里的初始化参数是要在 web.xml 文件中配置的。配置的初始化参数在 servlet 被第一次加载/tomcat 启动时就自动设置。
范例:设置和取得初始化参数
web.xml 如下代码
<servlet>
<servlet-name>webSafe</servlet-name>
<jsp-file>/WEB-INF/webSafe.jsp</jsp-file>
<!-- 配置初始化参数 -->
<init-param>
<param-name>name</param-name>
<param-value>小王</param-value>
</init-param>
<init-param>
<param-name>tel</param-name>
<param-value>12312431243</param-value>
</init-param>
<!-- 表示tomcat启动的时候就加载这个Servlet,如果不配置,则表示此Servlet在第一次访问之前被加载 -->
<load-on-startup>1</load-on-startup>
</servlet>
接下来在 jsp 我们可以这样写:
<h1><%=config.getInitParameter("name") %></h1>
<h1><%=config.getInitParameter("tel") %></h1>
- 配置初始界面
在直接访问项目的目录时,我们可以显示一个欢迎界面,示例代码如下:
<!-- 配置欢迎界面 -->
<welcome-file-list>
<welcome-file>login/login.jsp</welcome-file>
</welcome-file-list>