漂亮的URL映射与Spring 3.0 [英] Pretty URL Mapping with Spring 3.0

查看:139
本文介绍了漂亮的URL映射与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。
如何解决这个问题?

解决方案

两件事:


  1. 尝试将您的servlet映射更改为此(将 / * 更改为 / ):

     < servlet-mapping> 
    < servlet-name> springguestbook< / servlet-name>
    < url-pattern> /< / url-pattern>
    < / servlet-mapping>


  2. 确保您使用的视图解析器可以找到您的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:

  1. Try changing your servlet mapping to this (change /* to /):

    <servlet-mapping>
        <servlet-name>springguestbook</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

  2. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆