漂亮的URL映射与Spring 3.0 [英] Pretty URL Mapping with Spring 3.0
问题描述
当尝试将一个名为new的URL路径映射到具有某种逻辑的Controller方法时,会出现以下错误,然后显示视图index.jsp:
警告:在名为'springguestbook'的DispatcherServlet中未找到具有URI [/springguestbook/index.jsp]的HTTP请求的映射
这是我的Controller方法:
@RequestMapping(value =/ list方法= RequestMethod.GET)
public String showGuestbookEntries(HttpServletRequest请求,模型模型){
HttpSession session = request.getSession(true);
this.guestbookService = GuestbookService.getInstance(session);
model.addAttribute(guestbookEntries,
guestbookService.getGuestbookEntries());
returnindex;
}
这些是我的web.xml文件的内容: / p>
< display-name> Spring留言簿< / display-name>
< servlet>
< servlet-name> springguestbook< / servlet-name>
< servlet-class> org.springframework.web.servlet.DispatcherServlet
< / servlet-class>
< load-on-startup> 1< / load-on-startup>
< / servlet>
< servlet-mapping>
< servlet-name> springguestbook< / servlet-name>
< url-pattern> / *< / url-pattern>
< / servlet-mapping>
这是我的ViewResolver的配置:
< bean id =viewResolver
class =org.springframework.web.servlet.view.InternalResourceViewResolver>
< property name =prefixvalue =//>
< property name =suffixvalue =。jsp/>
< / bean>
在我看来,不是实际读取index.jsp的内容并显示它们,只是重定向到index.jsp。
如何解决这个问题?
两件事:
-
尝试将您的servlet映射更改为此(将
/ *
更改为/
):< servlet-mapping>
< servlet-name> springguestbook< / servlet-name>
< url-pattern> /< / url-pattern>
< / servlet-mapping>
-
确保您使用的视图解析器可以找到您的JSP,例如
InternalResourceViewResolver
:@Bean
public ViewResolver viewResolver b $ b InternalResourceViewResolver b = new InternalResourceViewResolver();
b.setPrefix(/ WEB-INF / jsp /);
b.setSuffix(。jsp);
return b;
}
>
< bean id =viewResolverclass =org.springframework.web.servlet.view.InternalResourceViewResolver>
< property name =prefixvalue =/ WEB-INF / jsp //>
< property name =suffixvalue =。jsp/>
< / bean>
I'm getting the following error when trying to map a URL path called "new" to a Controller method which does some logic, then displays the view "index.jsp":
WARNING: No mapping found for HTTP request with URI [/springguestbook/index.jsp] in DispatcherServlet with name 'springguestbook'
This is my Controller method:
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String showGuestbookEntries(HttpServletRequest request, Model model) {
HttpSession session = request.getSession(true);
this.guestbookService = GuestbookService.getInstance(session);
model.addAttribute("guestbookEntries",
guestbookService.getGuestbookEntries());
return "index";
}
These are the contents of my web.xml file:
<display-name>Spring Guestbook</display-name>
<servlet>
<servlet-name>springguestbook</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springguestbook</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
And this is the configuration of my ViewResolver:
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
It seems to me that instead of actually reading the contents of index.jsp and displaying them, the method just redirects to index.jsp instead. How do I fix this?
Two things:
Try changing your servlet mapping to this (change
/*
to/
):<servlet-mapping> <servlet-name>springguestbook</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
Make sure you're using a view resolver that can find your JSP, like
InternalResourceViewResolver
:@Bean public ViewResolver viewResolver() { InternalResourceViewResolver b = new InternalResourceViewResolver(); b.setPrefix("/WEB-INF/jsp/"); b.setSuffix(".jsp"); return b; }
or
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
这篇关于漂亮的URL映射与Spring 3.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!