当我映射 / 但是当我更改了url-pattern时,它就不能正常工作,例如/ user / *以下网址仅适用于/
错误是
警告:找不到带URI的HTTP请求的映射 带有名称的DispatcherServlet中的[/ SpringPractice / user / welcome] '欢迎'
如果我设置为/,它正在工作。 即使我检查控制器没有错误,因为如果没有找到映射,则它不适用于/ 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>
答案 0 :(得分:1)
如果您希望servlet以root身份映射到SpringPractice,则需要修改您的web.xml
将您的web.xml更改为:
<servlet-mapping>
<servlet-name>welcome</servlet-name>
<url-pattern>/SpringPractice/*</url-pattern>
</servlet-mapping>
您也可能使用错误的端口。 Tomcat(我假设你在这里使用)默认使用端口 8080 。
网址: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”的所有请求,那就太好了
我希望这会有所帮助。