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.

posted @ 2023-06-14 07:00  ming1010  阅读(42)  评论(0)    收藏  举报