SpringMVC 简单的开始

SpringMVC简单的开始

利用Spring模板配置写一个web项目。

1.核心配置文件(模板代码)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--        关联一个springmvc的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
            
        </init-param>
<!--        启动级别-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    
<!--  /  匹配所有请求,不包括.jsp-->
<!--  /* 匹配所有请求,包括.jsp  -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

 

2.spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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.xsd">
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--    视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--        前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <bean id="/h1" class="com.lian.HelloServlet"/>
</beans>
 

3.写Servlet类HelloController

public class HelloController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        // ModelAndView模型和视图
        ModelAndView mv=new ModelAndView();
        //封装对象,放在 ModelAndView中
        mv.addObject("msg","HelloSpringMVC!!");
        //封装要跳转的视图,放在 ModelAndView中
        mv.setViewName("hello");///WEB-INF/jsp/hello.jsp
        return mv;
    }
}

写这个例子的时候要跳转到 /h1 页面时候报404错误

查看了project Structure发现是项目的lib包没进来

 要保证项目需要的包都导入了

 执行原理分析:

1.用户发送请求request,被DispatcherServlet拦截,DispatcherServlet是前置控制器,DispatcherServlet通过关联一个springmvc的配置文件来处理请求;

2.在配置文件springmvc中加载处理器映射器BeanNameUrlHandlerMapping,这个处理器会自动适配拥有id的bean标签,执行结果返回给DispatcherServlet

3.DispatcherServlet加载处理器适配器SimpleControllerHandlerAdapter,这个适配器会找到bean标签的class属性对应的方法类所在位置,这个例子中是class=“com.lian.HelloController”,这个方法类就是我们说的Controller,里面是我们日常写的业务逻辑,将业务处理结果一步步返回,最终回到DispatcherServlet

4.DispatcherServlet调用视图解析器InternalResourceViewResolver,解析器将Controller里面要返回的jis文件的名字拿到,然后拼接成jsp页面的完整路径,解析器执行结束会返回一个view(是InternalResourceView类的实例)给DispatcherServlet

5.DispatcherServlet将拿到的view响应给前端页面

 

原理图:

 

posted on 2023-04-22 11:49  醒醒起来  阅读(15)  评论(0)    收藏  举报