欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringMVC学习笔记

程序员文章站 2022-07-15 11:41:37
...

一. 使用方法简介

1.基本组件:

  • 1 DispatcherServlet : 前端控制器,接收所有请求(如果配置/不包含 jsp);

  • 2 HandlerMapping: 解析请求格式的.判断希望要执行哪个具体的方法;

  • 3 HandlerAdapter: 负责调用具体的方法;

  • 4 ViewResovler: 视图解析器.解析结果,准备跳转到具体的物理视图。

2.需要jar包:

导入基于Spring的相关jar包,同时要导入spring.webmvc

3.在web.xml中注册servlet分发器:

 <servlet>
  	<servlet-name>dispatcher-servlet</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!--初始化sevlet分发器所在路径,因更改方便需要,将其放在WEB-INF目录下-->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>dispatcher-servlet</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>

4.创建一个简单的控制器:

package com.usermanager.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class TestController implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, 
				HttpServletResponse response) throws Exception {
			String msg = "msg from TestController";
			response.getWriter().write(msg);
		return null;
	}
}

5.在Spring容器中注入控制器的映射;在SpringMVC(dispatcher-servlet)容器中注入HandlerMapper对应的控制器方法的映射:

1.Spring容器代码(applicationContext)

<!--在Spring容器中注册控制器-->	
<bean id="testController" class="com.usermanager.controller.TestController"></bean>

2.SpringMVC容器代码(dispatcher-servlet)

<!--将控制器指定为相应的HandlerMapping的成员-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
	<property name="mappings">
		<props>
			<!--由于servlet分发器中定义拦截目标为'*.do',因此在key添加后缀.do-->
			<prop key="testController.do">testController</prop>
		</props>
	</property>
</bean>

6.最终效果:

1.发布项目;
2.当输入项目路径+testController.do打印相关语句,表示成功通过SpringMVC管理控制器

7.SpringMVC运行原理:

1. 当项目运行时,用户点击jsp页面触发相应的控制器且携带相应的参数,转交至dispatcher-servlet进行解析;

2. dispatcher-servlet根据请求所指定的控制器的具体名称。由handler-mapping查找该名称对应的控制器方法,转交至相应的控
	制器处理该请求;

4. 相应的控制器(重写(override)控制器接口的ModalAndView方法)处理请求,并转交参数给相应的service封装处理数据,
   service转交至相应的持久层dao处理与数据库交互的信息,最终逐层返回数据库处理结果给控制器;

5. 控制器接收结果,直接将结果以字节流形式输出给浏览器(用户),或是通过返回一个具体的界面(jsp)来完成页面的跳转