gpt4 book ai didi

java - Spring 新手 : The url-pattern for my DispatcherServlet seems to 'override' the welcome-file

转载 作者:搜寻专家 更新时间:2023-11-01 00:52:55 25 4
gpt4 key购买 nike

我正在使用 Spring 呈现我的 JSP,我的 DispatcherServlet 的 url-pattern 是“/”。这似乎是为了让欢迎文件列表永远不会被考虑。我实际上希望 DispatcherServlet 处理除“/”之外的所有内容。但是,我想避免文件扩展名(例如 *.html、.do 等),并且我使用的是 InternalResourceViewResolver,因此为调度程序 servlet 设置 url-pattern到“/”使它接受太多(例如,InternalResourceViewResolver 生成的 JSP 页面的内部请求将被调度程序 servlet 拦截,然后会抛出错误,因为它不有/WEB-INF/jsp/about.jsp 的映射)。任何帮助将不胜感激 - 我非常是 Spring 的新手(例如 2 天 ;-) )

以下是相应的文件:

目录结构

/war (I'm using AppEngine)
index.jsp (Simply includes WEB-INF/jsp/index.jsp)
/WEB-INF
XML Config files

/jsp
index.jsp
about.jsp
...

网络.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<!--
We purposefully do not make this /*. The convention here is to define
mappings for files that exist, and write a good 404 page for anything
else. Also, if you say /*, then the dispatcher servlet will intercept
all requests, and the InternalResourceViewResolver will fail to
resolve internal resources (e.g. jsp pages) because the dispatcher
servlet will be intercepting all of the requests, even the internal
ones
-->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>

调度器-servlet.xml

<!-- Search for and import all components in the controllers package -->
<context:component-scan base-package="org.foo.server.controllers" />


<bean name="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="order" value="2" />
<property name="location" value="/WEB-INF/views.xml" />
</bean>

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="100000" />
</bean>


<!--
Given an arbitrary view name, such as 'about, that has been returned
from a handler (controller), this will simply create
'/WEB-INF/jsp/about.jsp' and send that to the Dispatcher Servlet.
Because of the way ViewResolvers are chained (e.g. search until a View
is found), coupled with the annoyance that this ViewResolver cannot
determine if a View is found, this *has* to be the last ViewResolver
considered, so I have set the order very high. See
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-viewresolver-chaining
for more details
-->
<bean id="jspResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<property name="order" value="999" />
</bean>

JSP Controller (包含在 org.foo.server.controllers 包中的 Controller 之一)

@Controller
public class WebportalController {
@RequestMapping(value = "/myforms", method = RequestMethod.GET)
public String getMyForms() {
return "myforms";
}

@RequestMapping(value = "/about", method = RequestMethod.GET)
public String getAbout() {
return "about";
}
... etc (for now all of the JSP pages are fairly static)
}

最佳答案

我解决这个问题的方法是给 dipatcher servlet 一些前缀,并将带有该前缀的所有内容转发给它(包括扩展)。在我的例子中,我使用了 webapp 然后还有其他一级目录,如 images 等。这是我找到的唯一方法(除了 URL 重写)让这个工作。此外,如果您愿意,您可以使用 URL 重写引擎从没有扩展名的请求中删除 webapp,等等。

关于java - Spring 新手 : The url-pattern for my DispatcherServlet seems to 'override' the welcome-file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5774749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com