2015-06-15 4 views
0

У меня есть сопоставление контроллеров, которые работали до того, как я установил Spring Security. Я изучаю MVC и Spring.Spring URI - Отображение контроллера

Теперь я получаю сообщение PageNotFoundException, говорящее, что путь не найден. Если вы видите мой контроллер, он отображает/user и метод для получения данных в/list.

Я не уверен, в чем проблема. Любая помощь будет полезна.

Вот информация:

MVC-диспетчерская-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.1.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"> 

<!-- Bean to show you Di in GAE, via Spring, also init the UserController --> 
<!-- <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /> 
--> 
<context:component-scan base-package="com.principalmvl.lojackmykids"> 
<context:include-filter type="regex" expression="(service|constroller)\..*"/> 
</context:component-scan> 
    <!-- Enables JSR-303 --> 
<mvc:annotation-driven/> 
<context:annotation-config /> 


<bean class="com.google.appengine.api.users.UserServiceFactory" 
    factory-method="getUserService" /> 
<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>pages/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 

web.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"> 
<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> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml /WEB-INF/applicationContext-security.xml</param-value> 
</context-param> 
<sessions-enabled>true</sessions-enabled> 

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

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<filter> 
    <filter-name>datastoreFilter</filter-name> 
    <filter-class>org.slim3.datastore.DatastoreFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>datastoreFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>profile</web-resource-name> 
     <url-pattern>/profile/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 
</security-constraint> 

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>admin</web-resource-name> 
     <url-pattern>/admin/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>admin</role-name> 
    </auth-constraint> 
</security-constraint> 

UserController.java

@Controller 
@RequestMapping("/user") 
public class UserController { 

@RequestMapping(value = "/addUser", method = RequestMethod.GET) 
public String getAddUserPage(ModelMap model) { 

    return "add"; 

} 


// get all users 

@RequestMapping(value = "/list", method = RequestMethod.GET) 
@ResponseBody 
public List<Contact> listCustomer(ModelMap model) { 

    List<Contact> users = Datastore.query(Contact.class).asList(); 

    model.addAttribute("userList", users); 

    return users; 

} 
} 

LoginController.Java [Это первый контроллер, который вызывается]

@Controller 
public class LoginController { 

private static final Logger log = Logger.getLogger(LookupUserServlet.class 
    .getName()); 

@RequestMapping(value = "/", method = RequestMethod.GET) 
public String landing() { 
    return "landing"; 
} 


@RequestMapping(value = "/home.jsp", method = RequestMethod.GET) 
public String home() { 

    return "home"; 
} 

@RequestMapping(value = "/disabled.jsp", method = RequestMethod.GET) 
public String disabled() { 
    return "disabled"; 
} 

@RequestMapping(value = "/logout.jsp", method = RequestMethod.GET) 
public void logout(HttpServletRequest request, HttpServletResponse response) 
     throws IOException { 
    request.getSession().invalidate(); 

    String logoutUrl = UserServiceFactory.getUserService().createLogoutURL(
      "/loggedout.jsp"); 

    response.sendRedirect(logoutUrl); 
} 

@RequestMapping(value = "/loggedout.jsp", method = RequestMethod.GET) 
public String loggedOut() { 
    return "loggedout"; 
} 


@RequestMapping("/ListUsers") 
public String ListUser() { 

    return "users/ListUsers"; 

} 

@RequestMapping("/SendAll") 
public String SendAll() { 

    return "sendmessage/SendAll"; 

} 

В моем методе ListUsers я должен перенаправить к контроллеру под названием UserController ?

+0

Каков URL-адрес, который вы пытаетесь нажать точно, что возвращает 404? – Aeseir

+0

Я пытаюсь перейти в/user/list. Это должно отображаться в контроллере классу и методу, но Spring говорит, что страница не найдена. Мне интересно, есть ли у него какая-то конфигурация, связанная с JSP, и это путает. – Axwack

+0

Таким образом, это POST/user/list, который означает, что вы получаете 404 при попытке отправить форму. Я собираюсь сделать предположение и ответить на сообщение. – Aeseir

ответ

0

Ваш список имеет дополнительный/

@RequestMapping(value = "/list/", method = RequestMethod.POST) 

изменить его на

@RequestMapping(value = "/list", method = RequestMethod.POST) 

Это на предположении, что ваша форма представляется указывает на «/ список»

+0

Aeseir..thanks для ответа. Это не так. У меня есть это как @RequestMapping (value = "/ list", method = RequestMethod.GET). Вот что-то интересное. Я добавил это в Интернет.XML \t <сервлет-отображение> \t \t <имя сервлета> MVC-диспетчерская/пользователь/* \t и производит это журналы. /user/list/index.html/index.html/index.html/index.html/index.html/index.html/ – Axwack

0

Так что я переехал URI для моего контроллера, называемого LoginController, и запрос работал. Теперь мой вопрос: почему мой UserController не получает ответа. У меня есть сканирование базового сканирования контекста во всех базовых пакетах и ​​моем контроллере.

У кого-нибудь есть идеи?

0

После более тщательного расследования. Я считаю, что Eclipse что-то сделал с классом Java. Когда я смотрел на класс Java и как Eclipse аннотирует его, у него не было соответствующего «поворотного», который показывает подрядчика этого класса.

Я создал еще один класс Java и добавил код, и он работал надлежащим образом.