在控制器中设置完整路径

时间:2011-08-17 06:41:22

标签: spring spring-mvc annotations

我开发了一个弹簧应用程序。所有请求都发送到控制器(我的应用程序中有2个控制器)所以web.xml就像下面的

web.xml中的

<servlet-mapping>
   <url-pattern>/*</url-pattern>

aaa控制器

@Controller
@RequestMapping("/aaa")

bbb控制器

@Controller
@RequestMapping("/bbb")

但是现在我需要在我的项目中添加一些jsp页面,因为web.xml中的“/ *”找不到我的jsp页面。所以我改变了servlet-mapping,如下所示;

web.xml中的

<servlet-mapping>
   <url-pattern>/aaa/*</url-pattern>
   <url-pattern>/bbb/*</url-pattern>

aaa控制器

@Controller
@RequestMapping("/")

bbb控制器

@Controller
@RequestMapping("/")

但我不想使用这种方法,因为我可以在/ bbb / xxx这样的控制器中访问xxx servlet。

那么有没有其他替代解决方案,例如我可以在控制器或其他任何设置中设置完整路径吗?

提前感谢...

1 个答案:

答案 0 :(得分:1)

您还需要通过服务器传递jsp。 您可以将其映射为html扩展名

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

<servlet-mapping>
    <servlet-name>example</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

在example-servlet.xml中,只需添加以下jsp解析器

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
      <property name="prefix" value="/jsp/"/>
      <property name="suffix" value=".jsp"/>
  </bean>

然后在控制器中使用ModelAndView对象:

@Controller
@RequestMapping(value="/aaa")
public class aaaController{

    @RequestMapping(value="/aaa.html", method=RequestMethod.GET)
    public ModelAndView index(){
        ModelAndView mv = new ModelAndView("aaa");
        return mv;
    }
}


@Controller
@RequestMapping(value="/bbb")
public class aaaController{

    @RequestMapping(value="/bbb.html", method=RequestMethod.GET)
    public ModelAndView index(){
        ModelAndView mv = new ModelAndView("bbb");
        return mv;
    }
}

在这种情况下,当您点击/aaa / aaa.html

时,第一个控制器将返回/aaa.jsp作为您的模型和View

第二个控制器将返回/bbb.jsp作为您的模型,并在您点击/bbb / bbb.html时查看

希望它有所帮助。