所以,我目前有这个 ->
<servlet>
<servlet-name>Home</servlet-name>
<jsp-file>/index.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>Home</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>
现在,一切正常,但我根本不希望用户能够访问index.jsp,有没有办法让我在访问像index.jsp这样的url时,如果文件有一个像上面的 servlet 一样,它会将它们重定向到那个 servlet?
最佳答案
将 JSP 文件移至 /WEB-INF
文件夹中。
/WEB-INF
文件夹中的文件无法从外部访问,但可以从 web 应用程序内部访问。
更新
仅与 webapps/test
文件夹下的 2 个文件完美配合:
/path/to/tomcat/webapps/test/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>Test Application</display-name>
<servlet>
<servlet-name>Home</servlet-name>
<jsp-file>/WEB-INF/index.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>Home</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>
<session-config><session-timeout>30</session-timeout></session-config>
</web-app>
/path/to/tomcat/webapps/test/WEB-INF/index.jsp
<%@ page contentType="text/html;charset=UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
<h3>Hello World!</h3>
<p>This is a test</p>
</body>
</html>
访问http://localhost:8080/test/home
显示1:
访问http://localhost:8080/test/index.jsp
显示 404 – 未找到。
访问http://localhost:8080/test/WEB-INF/index.jsp
显示404 - 未找到。
1) 在运行 Java 11.0.2+9 的 Apache Tomcat/9.0.27 上测试。
关于java - 使index.jsp重定向到其不带扩展名的url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58856164/