简体   繁体   English

映射多个控制器的问题

[英]Issues with mapping multiple controllers

I am new to spring.My mappings not working correctly though my Tomcat logs show that my URL is mapped. 我是spring的新手,虽然我的Tomcat日志显示我的URL已映射,但我的映射无法正常工作。

INFO: Mapped URL path [/movie/{name}] onto handler 'movieController'
Jun 21, 2015 9:03:24 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/movie/{name}.*] onto handler 'movieController'
Jun 21, 2015 9:03:24 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/movie/{name}/] onto handler 'movieController'
Jun 21, 2015 9:03:24 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/movies] onto handler 'movieController'
Jun 21, 2015 9:03:24 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/movies.*] onto handler 'movieController'
Jun 21, 2015 9:03:24 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/movies/] onto handler 'movieController'
Jun 21, 2015 9:03:24 PM **org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/employeelist] onto handler 'userList'
Jun 21, 2015 9:03:24 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/employeelist.*] onto handler 'userList'
Jun 21, 2015 9:03:24 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/employeelist/] onto handler 'userList'

I have two controllers defined in web.xml. 我在web.xml中定义了两个控制器。

<web-app id="WebApp_ID" version="2.4"
    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">

    <display-name>Spring Web MVC Application</display-name>


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

    <!-- for ListDispatcher -->

    <servlet>       <servlet-name>list-dispatcher</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>    </servlet>


    <servlet-mapping>       <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/test/*</url-pattern>  </servlet-mapping>


    <servlet-mapping>       <servlet-name>list-dispatcher</servlet-name>
        <url-pattern>/list/*</url-pattern>  </servlet-mapping>


<context-param>   <param-name>contextConfigLocation</param-name>  
<param-value>
    /WEB-INF/list-dispatcher-servlet.xml
    /WEB-INF/mvc-dispatcher-servlet.xml   </param-value> </context-param>

    <!-- <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener> --> 
</web-app>

I am getting output for the ones defined in MovieController. 我正在获取MovieController中定义的输出。 http://localhost:8080/SpringMVC/test/movies HTTP://本地主机:8080 /用SpringMVC /测试/电影

But when i giving the URL to fetch the employeelist(another controller).its not working.Below is the controller class.:- 但是当我给出URL以获取employeelist(另一个控制器)时,它不起作用。以下是控制器类。

@Controller

public class UserList {


    public ModelAndView getdata() {
        System.out.println("Data");

        ArrayList<Employee> list = getEmpList();

        //return back to index.jsp
        ModelAndView model = new ModelAndView("index");
        model.addObject("lists", list);

        return model;

    }

    @RequestMapping(value="/employeelist", method = RequestMethod.GET) 
    public @ResponseBody  ArrayList<Employee> getEmpList(){
        System.out.println("inside The ArrayList");
        ArrayList<Employee> emp=new ArrayList<Employee>();
        emp.add(new Employee("sougata",25));
        emp.add(new Employee("sahil",30));
        return emp;

    }
}

Can someone pleas help me out to get the response from the 2nd controller. 有人可以请我帮忙从第二个控制器获得响应。 URL i am using is:- http://localhost:8080/SpringMVC/list/employeelist 我正在使用的URL是: -http:// localhost:8080 / SpringMVC / list / employeelist

Change the piece of snippet code in your application. 更改您的应用程序中的代码段。

In your case, You have separated two controller's for multiple action. 在您的情况下,您已将两个控制器分开以进行多个操作。 So according to your case scenario, replace this snippet code in web.xml, like this 因此,根据您的情况,请像下面这样在web.xml中替换此代码段代码

<servlet-mapping>
     <servlet-name>mvc-dispatcher</servlet-name>
     <url-pattern>/</url-pattern>
</servlet-mapping>

And change the controller request mapping in the controller class, for movie Controller add like this, 并在controller类中更改controller请求映射,为Movie Controller这样添加,

@Controller
@RequestMapping("/movieController")
public class MovieController {

for userList controller add like this, 为userList控制器添加这样的内容,

@Controller
@RequestMapping("/userListController")
public class UserList {

Check your component-base package property correctly mentioned in dispatcher-servlet.xml. 检查dispatcher-servlet.xml中正确提到的基于组件的包属性。

Try adding produces="application/json" to your @RequestMapping as shown below. 尝试如下所示将Produces =“ application / json”添加到您的@RequestMapping中。

@RequestMapping(value="/employeelist", method = RequestMethod.GET, produces="application/json") @RequestMapping(value =“ / employeelist”,方法= RequestMethod.GET,产生=“ application / json”)

Are you trying to integrate spring MVC and CXF service? 您是否正在尝试整合Spring MVC和CXF服务? the servlet-class for list-dispatcher is CXFServlet in your web.xml. list-dispatcher的servlet-class是web.xml中的CXFServlet。 org.apache.cxf.transport.servlet.CXFServlet If not-You do not actually need two different servlet configurations. org.apache.cxf.transport.servlet.CXFServlet如果不是,您实际上不需要两个不同的servlet配置。 simply have the below 只需具有以下内容

<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">
    <servlet><servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM