1.springmvc特点

1.springmvc是web项目;
2.与spring无缝集成;
3.因为springmvc基于spring,所以springmvc继承了spring的与其他框架容易结合的特点;
4.提供了一个前端控制器DispatcherServlet.这个控制器做了许多的事情,后面会说明;
5.支持国际化;
6.支持多种视图技术;
7.使用基于xml的配置文件(也可以基于注解配置);
8.自动绑定用户输入,正确的转换数据类型。

2.spring核心点

1.前端控制器DispatcherServlet

想要知道前端控制器做了哪些事情,就需要知道一个Javaweb中发起一个请求到得到一个回应需要经历哪些过程。
①用户发起请求;
②前端控制拦截到请求;
③前端控制器调用映射器;
④映射器返回映射目标类;
⑤前端控制器调用处理适配器;
⑥处理适配器调用目标类实现的处理器;
⑦目标类实现的处理器返回ModeAndView对象;
⑧处理适配器返回ModeAndView对象给前端控制器;
⑨前端控制器调用视图解析器解析ModeAndView对象;
⑩视图解析器解析ModeAndView对象返回具体的视图;
11前端控制器渲染视图(数据填充工作);
12渲染后的视图返回给用户。

前端控制器主要做以下几件事:
1.拦截用户请求;
2.调用映射器;
3.调用处理适配器;
4.调用视图解析器;
5.渲染视图;
6.返回渲染后的视图。

2.支持国际化

国际化就是前端控制器在渲染视图填充数据时,有选择的填充,这样就完成了国际化,只需要准备不同的语言文件即可。

3.多种视图技术

因为springmvc基于spring开发,所以只需要指定其他的视图解析器就会做到支持其他的视图技术。

4.基于xml配置以及注解配置

还是同样的原因,因为spring就有两种配置方式:
xml和注解。
所以springmvc也有两种配置方式。

5.自动绑定用户

spring可以自动的寻找bean:使用反射处理bean。

2.例子

1.创建一个Javaweb项目

springMVC-hello
springMVC-hello

2.导入tomcat容器

springMVC-hello
如果没有server,就去Other中搜索。
springMVC-hello
在这个窗口中添加。
springMVC-hello
添加后。

3.导入jar包

springMVC-hello

4.创建web.xml文件

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app.xsd">
	<servlet>
		<!-- 配置前端过滤器 -->
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 初始化时加载配置文件 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc-config.xml</param-value>
		</init-param>
		<!-- 容器启动时加载servlet -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>

5.创建前端控制器配置

springmvc-config.xml

<?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">
	<!-- 配置处理器,映射/hello -->
	<bean id="/hello" class="controller.FirstController">
	</bean>
	<!-- 配置映射器,url和class进行映射 -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
	</bean>
	<!-- 配置处理器,调用controller中实现的方法(使用了适配器模式) -->
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
	<!-- 解析视图(mav) -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>

只配置第一个也可以。

6.创建映射器目标类–controller

springMVC-hello

package 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 FirstController implements Controller{

	@Override
	public ModelAndView handleRequest(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		//1.创建mav对象
		ModelAndView mav = new ModelAndView();
		//2.mav添加数据
		mav.addObject("message", "hello springMVC");
		//3.设置mav访问路径
		mav.setViewName("/WEB-INF/jsp/first.jsp");
		//4.返回mav对象
		return mav;
	}


}

其中handleRequest方法就是目标类具体的处理器。
ModeAndView不仅仅可以添加数据,也可以设置View

7.创建视图

springMVC-hello
first.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Hello Spring MVC</title>
</head>
<body>
	${message}
</body>
</html>

其中${message}是jsp中的el表达式。

8.添加到容器

springMVC-hello

9.启动容器

springMVC-hello
没有异常且看到Server startup in 1929ms即说明容器启动正常,此时访问我们配置的url
就是在前端控制器中配置的url:
http://localhost:8080/springmvc_hello_/hello
说明:
http表示访问方式
localhost表示目标主机
8080表示访问的端口
springmvc_hello_表示访问的项目
hello表示访问的请求

10.访问结果

springMVC-hello

3.总结

学习springmvc可以深刻的了解Javaweb中请求的过程。
更深入的理解为什么,而不是怎么做。

相关文章:

  • 2021-05-19
  • 2022-12-23
  • 2021-07-31
  • 2021-10-25
  • 2022-01-13
  • 2022-12-23
  • 2021-10-26
  • 2021-08-29
猜你喜欢
  • 2022-02-11
  • 2021-07-28
  • 2021-07-19
  • 2021-10-15
  • 2022-12-23
  • 2022-12-23
  • 2021-08-02
相关资源
相似解决方案