SpringMVC-学习笔记
解决 maven 项目构建过慢:
在创建时加一组键值对:archetypeCatalog---internal
配置步骤:
创建maven项目,补全目录
修改pom.xml:
properties里改1.8
版本锁定:
<!--版本锁定-->
<properties>
<spring.version>5.2.8.RELEASE</spring.version>
</properties>
导坐标:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
配置控制器(在web.xml中配置servlet):
class选择spring提供好的 DispatcherServlet 类
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
在resources文件夹下创建springmvc配置文件springmvc.xml配置文件(名字随意)
配置tomcat服务器
注:发送请求时路径写相对路径
2.SpringMVC执行流程
3.RequestMapping注解
建立请求URL和处理请求方法之间的对应关系
该注解可以放在类上(作为一级目录),也可以放在方法上(二级目录),如 /user/hello,有利于模块化开发
属性:
-
path 和 value 属性作用相同
-
method 属性指定接收哪一种请求方式(用枚举类RequestMethod.方式),请求方式不对会产生405异常
-
params 属性指定限制参数的内容,params属性指定的参数必须在发送请求时带上,若有值时值也必须相同(即k-v都相同),否则会有400异常
-
headers:用于指定限制请求消息头的条件,当指定此属性时,在发送请求时必须带上该头信息,否则错误
<%--
<a href="hello">入门程序</a>
--%>
<a href="user/testRequestMapping?username=lisi">测试RequestMapping</a>
4.请求参数的绑定
拿到客户端请求时发送的参数
如发送请求时携带参数:...username=...&password=...
4.1.请求参数的绑定说明
1.绑定机制
1.表单提交的数据都是 k=v 格式的,如:username=haha&password=123
2.SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
3.要求:提交表单的name和参数的名称是相同的
在MVC框架中,只要在处理该请求的方法中加上参数,名字与请求携带的参数名一致,即可自动将请求中该参数的值赋给方法的参数(底层反射)
2.支持的数据类型
-
基本类型和字符串
-
JavaBean
-
复杂类型(List、Map集合等)
4.2.基本数据类型和字符串类型
1.提交表单的name和参数的名称是相同的
2.区分大小写
4.3.实体类型(JavaBean)
1.提交表单的name和JavaBean中的属性名称一致
2.如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性,例如:address.name
4.4.给集合属性数据封装
1.JSP页面编写方式:list[0].属性
<%--请求参数绑定--%>
<%--
<a href="param/testParam?username=zhangsan&password=123456">请求参数绑定</a>
把数据封装到Account对象中
<div align="center">
<form action="param/saveAccount" method="post">
<p> 姓 名:<input type="text" name="username"/> </p>
<p> 密 码:<input type="password" name="password"/> </p>
<p> 金 额:<input type="text" name="money"/> </p>
<p> 用户姓名:<input type="text" name="user.uname"/> </p>
<p> 用户年龄:<input type="text" name="user.age"/> </p>
<p> <input type="submit" value="提交"/> </p>
</form>
</div>
--%>
<%--把数据封装到Account对象中,对象中存在list和map的集合
<div align="center">
<form action="param/saveAccount" method="post">
<p> 姓 名:<input type="text" name="username"/> </p>
<p> 密 码:<input type="password" name="password"/> </p>
<p> 金 额:<input type="text" name="money"/> </p>
<p> 用户姓名:<input type="text" name="list[0].uname"