2016-06-14 7 views
2
  1. контроллер имя пакета, где WelcomeController есть
  2. вид папки в WEB-INF, где просмотр файлов есть средства HTML и статические JSP
  3. В видовом welcome.jsp
  4. В WebContent web.xml и приветственный-servlet.xml есть

когда я сопоставляюсь /, но когда я изменил URL-шаблон, то это не работает, например,/Пользователь/* следующий URL работает только/отображение URL не работает в web.xml весной

http://localhost:3000/SpringPractice/user/welcome

Ошибка не

ВНИМАНИЕ: Не картирование найдено для запроса HTTP с URI [/ SpringPractice/пользователь/приветствия ] в DispatcherServlet с именем 'welcome'

it's wor король, если я установил значение /. Даже я проверил контроллер без ошибок, потому что если отображение не найдено, оно не будет работать для/pattern.

web.xml

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

    <servlet-mapping> 
    <servlet-name>welcome</servlet-name> 
    <url-pattern>/user/*</url-pattern> 
    </servlet-mapping> 

WelcomeController.java

package controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
public class WelcomeController { 

    @RequestMapping(method=RequestMethod.GET,value="/user/welcome") 
    public String GET(ModelMap model){ 
     //second is the message name 
     //3rd is the message 
     model.addAttribute("message","GET Method"); 
     return "welcome";  //we'll always return the name of the view here welcome.jsp e.g. welcome 
    } 

    @RequestMapping(method=RequestMethod.POST,value="/user/welcome") 
    public String POST(ModelMap model){ 
     model.addAttribute("message","POST Method"); 
     return "welcome"; 
    } 
} 

радушны-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    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-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:component-scan base-package="controller" /> 

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

</beans> 

ответ

1

Y наш web.xml должен быть изменен, если вы хотите, чтобы сервлет для сопоставления SpringPractice как корень

Изменить web.xml выглядеть следующим образом:

<servlet-mapping> 
    <servlet-name>welcome</servlet-name> 
    <url-pattern>/SpringPractice/*</url-pattern> 
</servlet-mapping> 

Это также возможно, вы используете неправильный порт. Tomcat (который я предполагаю, что вы используете здесь) использует порт по умолчанию.

URL-адрес: http://localhost:8080/SpringPractice/user/welcome

теперь должны работать нормально


не требуется следующее, это просто может быть полезным

Кроме того, вы можете использовать @RequestMapping на классе если хотите.

@Controller 
@RequstMapping(value="/user/welcome") 
public class WelcomeController { 

    @RequestMapping(method=RequestMethod.GET, value="") 
    public String GET(ModelMap model){ 
     //second is the message name 
     //3rd is the message 
     model.addAttribute("message","GET Method"); 
     return "welcome";  //we'll always return the name of the view here welcome.jsp e.g. welcome 
    } 

    @RequestMapping(method=RequestMethod.POST, value="") 
    public String POST(ModelMap model){ 
     model.addAttribute("message","POST Method"); 
     return "welcome"; 
    } 
} 

Добавляя RequestMapping(value="/user/welcome") в верхней части класса контроллера все отображения под ним будет использовать, что в качестве основы. Приятно, если вы знаете, что какой-то контроллер будет обрабатывать все запросы от «www.MyCoolSite.com/user/welcome»

Надеюсь, это поможет.

+0

Почему downvote? Что-то не так в этом ответе? Я бы предпочел знать, чтобы я мог исправить это. – njfife

Смежные вопросы