简单了解
M 模型 javabean中的一个对象
V 视图
C 控制器 接收请求并进行处理,使用javabean将接收到的数据进行封装。
入门程序
需求:便写jsp的页面,使用超链接,点击链接,发送请求,SpringMVC框架处理请求,转发到成功页面
一、搭建开发环境
1、创建项目。
然后不停地next即可。如果要解决加载过慢的问题,可以在如下页面添加键值对:
创建成功后,将文件结构补充完整。在main下面新建一个名为java的目录,按照如下图所示进行设置。
2、导入开发的jar包(坐标依赖)。打开pom文件,将下面内容复制到文件中:
<properties>
<spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
3、在web.xml文件中配置前端的控制器。
4、创建springmvc的配置文件,如下图所示:
二、入门代码编写
1、在webapp目录下的jsp文件中编写代码。
2、配置springMVC的配置文件。在配置文件当中开启注解扫描。类被扫到以后就变成对象,
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--配置了内容,启动Tomcat服务器的时候,就会被加载-->
<!--配置注解扫描-->
<context:component-scan base-package="main.java.cn.xuqg.demo1"/>
<!--配置视图解释器,进行页面的跳转-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--跳转的页面的路径-->
<property name="prefix" value="/" />
<!--跳转的页面的后缀名称-->
<property name="suffix" value=".jsp" />
</bean>
</beans>
3、配置前端控制器(Servlet,SpringMVC框架提供的)(web.xml)。该步骤的过程主要的作用是使得配置文件被加载。文件中init-param标签的作用在于为param-name所显示的属性传值,将配置文件传入,使得springMVC可以加载所需要的配置文件。load-on-startup表示启动服务器就可以开始创建对象,加载配置文件,扫描生效,类变成对象。
<?xml version='1.0' encoding='UTF-8'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<!--配置springMVC的前端控制器-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--加载springmvc.xml配置文件,配置的是spring配置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--配置启动加载-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
4、编写Controller类(控制器类)。加载成功后,MVC会跳转到一个成功页面。
//控制器:处理用户的请求
@Controller
public class HelloController {
//处理超链接发出来的请求
@RequestMapping("/hello.do")
public String sayHello(){
System.out.println("入门方法执行了...");
//返回值为jsp页面跳转的路径,默认使用的是请求的转发
//return "/suc.jsp";
//配置了视图解析器后的写法
return "suc";
}
}
三、流程总结
1、启动服务器,加载配置文件。在web.xml文件当中配置一个前端的控制器。启动服务器时,servlet对象被创建,配置文件被加载。
2、配置文件当中含有注解扫描,一开始就可以将控制器类进行加载,变成对象,默认是单例的。视图解析器也可以直接变成对象,完成跳转页面的操作。最后,开启springMVC框架注解支持。
3、发送http请求,后台处理。页面上有超链接,可以通过点击来发送超链接。首先会执行servlet,它会拦截所有请求。servlet是前端控制器,起到一个指挥中心的作用。servlet会根据之前方法上方编写的注解,找到具体的方法,让方法执行。
4、执行完成后,控制器找别的方法去执行,找视图解析器。视图解析器会帮助我们找到返回页面。servlet最后将请求响应到客户端。
四、组件介绍
五、RequestMapping注解
作用:建立请求URL和处理请求方法之间的对应关系。客户端发送请求,服务端执行,需要在二者之间建立对应关系。
如果将注解放在类上,可以声明一级目录,使得URL更加清晰。将注解放在方法上,可以声明请求URL的二级访问目录。
属性:
value:用于指定请求的URL。它和path属性的作用是相同的。
method:用于指定请求的方式。
params:用于指定限制请求参数的条件。它支持简单的表达式,要求请求参数的key和value必须一模一样。
请求参数的绑定
客户端在发送请求时,会携带请求参数,服务端会获取参数,这个过程称为请求参数的绑定。
请求表单提交数据时,以键值对的形式进行。springMVC框架会在方法上加入参数,参数来源于表单提交的数据。底层通过反射的方式拿到方法的属性,将表单的名字传给属性的值。
支持的数据类型:
1、基本数据类型和字符串类型。
2、实体类型javabean
3、集合数据类型list、map等等。
基本数据类型和字符串类型。
示例:
页面的代码:
控制器类的代码:
要做到方法的参数和提交的参数相绑定,如下图所示:
请求参数绑定实体类型
1、新建一个Account类。
2、创建一个表单。其中name与javabean的属性名称相同。
3、编写表单提交后,后台的处理方法。
当Account类中还有另一个类的引用时,如下图所示:
如果要往User类对象当中注入数据,应该如下写法:
解决中文乱码的配置
当在表单中提交中文时,会出现乱码现象,如下图所示:
可以通过在web.xml文件中配置过滤器来解决这个问题。如下图所示:
请求参数绑定集合类型
假设类中含有集合类型,需要将数据封装到类当中。
应当在jsp文件当中进行如下配置:
自定义类型转换器
当格式不支持时可能会发生报错。如下图所示,User类中有一个属性date表示日期。
按下图所示的方式编写表单:
在控制器类当中添加如下方法:
测试后发现出现异常。解决方法:自定义类型转化器。
实现方法:1、定义一个类,实现Converter接口,该接口有两个泛型。
注册类型转换器,前端控制器会寻找类型转换器,将字符串转为日期格式。接口的源码如下图所示。其中S是原始类型,T是目标类型。
编写一个新的类实现Converter接口,如下图所示:
2、打开springMVC的配置文件。最外层bean标签中的class后面的内容固定,可以通过查文档找到。内层bean标签中的class表示第一步所编写的类的全限定类名。
3、使得配置生效
获取Servlet原生的API
在方法上加参数即可。想获得谁就写对应的对象即可。