我的WAR结构如下:
my-web-app.war/
views/
index.html
blah.html
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
lib/
<!-- Dependencies -->
classes/
org.me.mywebapp.controllers/
MyController.class
<!-- Other packages/classes as well -->
我想配置web.xml
,以便在本地部署WAR时,可以通过index.html
访问http://localhost/my-web-app/index.html
页面。
这是我到目前为止所拥有的:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<!-- The display name of this web application -->
<display-name>My Web App</display-name>
<listener>
<listener-class>
org.me.mywebapp.context.ContextImpl
</listener-class>
</listener>
</web-app>
如何配置此URL以查看映射?提前谢谢!
答案 0 :(得分:6)
您可以像这样映射您的servlet
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>org.me.mywebapp.controllers.MyController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>index.html</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>controller2</servlet-name>
<servlet-class>org.me.mywebapp.controllers.OtherController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller2</servlet-name>
<url-pattern>blah.html</url-pattern>
</servlet-mapping>
如果你想将view / blah.html显示为/blah.html,在控制器中你只需将请求发送到适当的视图/ * .html或jsp或任何你想要的东西。
编辑:按照您的要求: 您可以将请求分派到servlet中的另一个页面,如下所示:
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/views/blah.html");
dispatcher.forward(request, response);
虽然上面的代码工作正常,你应该在每个servlet中实现一个更“复杂”的方法来决定你将分派哪个视图,特别是如果你的应用程序有很多控制器,视图等等。试着阅读有关MVC的更多信息如果你还没有完成实现。
答案 1 :(得分:1)
您可以使用将特定请求路由到view
路径的过滤器。请参阅响应:https://stackoverflow.com/a/3593513/221951然后在过滤器中决定是否应将请求传递给servlet。
您可以尝试使用Tuckey URL重写过滤器http://tuckey.org/urlrewrite/
答案 2 :(得分:-1)
您可以通过在过滤器中重写URL来完成此操作。
像大多数框架一样实现,如Struts,Spring MVC,Tapestry,Wicket等