SpringMVC原理及配置
1.springmvc web.xml
1.1配置版springmvc(configuration)_web.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" 5 version="6.0"> 6 7 <servlet> 8 <servlet-name>SpringMVC</servlet-name> 9 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 10 <init-param> 11 <param-name>contextConfigLocation</param-name> 12 <param-value>classpath:springmvc_servlet.xml</param-value> 13 </init-param> 14 <load-on-startup>1</load-on-startup> 15 </servlet> 16 <servlet-mapping> 17 <servlet-name>SpringMVC</servlet-name> 18 <url-pattern>/</url-pattern> 19 </servlet-mapping> 20 </web-app>
1.2注解 版springmvc(annotation)_web.xml,同上。
2.springmvc_servlet.xml
2.1配置版web.xml对应路径path:springmvc_servlet.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> 7 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 8 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 9 <property name="prefix" value="/WEB-INF/jsp/"></property> 10 <property name="suffix" value=".jsp"></property> 11 </bean> 12 13 <bean id="/hello" class="com.ming.controller.HelloController"></bean> 14 15 </beans>
2.2注解版web.xml对应路径path:pringmvc_servlet.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/context 9 https://www.springframework.org/schema/context/spring-context.xsd 10 http://www.springframework.org/schema/mvc 11 https://www.springframework.org/schema/mvc/spring-mvc.xsd"> 12 <!--自动扫包,不处理静态资源,注解驱动--> 13 <context:component-scan base-package="com.ming.controller"></context:component-scan> 14 <mvc:default-servlet-handler></mvc:default-servlet-handler> 15 <mvc:annotation-driven></mvc:annotation-driven> 16 17 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 18 <property name="prefix" value="/WEB-INF/jsp/"></property> 19 <property name="suffix" value=".jsp"></property> 20 </bean> 21 22 </beans>
3.Controller类
3.1配置版controller类(推理使用,现实中少用)
1 public class HelloController implements Controller { 2 @Override 3 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 4 ModelAndView modelAndView = new ModelAndView(); 5 String result = "HelloSpringMVC"; 6 modelAndView.addObject("msg",result); 7 modelAndView.setViewName("hello"); 8 return modelAndView; 9 } 10 }
3.2注解版controller类
1 @Controller 2 public class HelloController { 3 @RequestMapping("/hello") 4 public String hello(Model model){ 5 model.addAttribute("msg","SpringMVC"); 6 return "hello"; 7 8 } 9 }
4.注解版本中Controller类的访问。
4.1同一个test页面将会跳转不同的内容,根据 /t1 or /t3的路径,将 /t1 or /t3的内容跳转至同一个Test页面。
1 @Controller 2 public class ControllerTest2 { 3 @RequestMapping("/t1") 4 public String test1(Model model){ 5 model.addAttribute("msg","ControllerTest2"); 6 return "test"; 7 } 8 @RequestMapping("/t3") 9 public String test13(Model model){ 10 model.addAttribute("msg","ControllerTest3"); 11 return "test"; 12 } 13 14 }
4.2ControllerTest2 和ControllerTest3都有 /t1,会先跳转ControllerTest2的/t1。
1 @Controller 2 @RequestMapping("/c3") 3 public class ControllerTest3 { 4 @RequestMapping("/t1") 5 public String test1(Model model){ 6 model.addAttribute("msg","ControllerTest3"); 7 return "admin/test"; 8 } 9 }
问题:配置文件没有错的情况下,部署文件有lib,可以访问到index.jsp,但是其他页面,例如:/hello, /test等页面就是404,可能跟环境有关,目前未解决。
需要用idea的maven-architype-webapp,若不选择该type,使用add framwoek support as web app,即使配置一模一样,仍然是404.

浙公网安备 33010602011771号