springMVC_1 springmvc概述以及入门案例
1.1 清晰的角色划分
前端控制器(DispatcherServlet)
请求到处理器映射(HandlerMapping):哪个方法
处理适配器(HandlerAdapter):
处理器或页面控制器(Controller)
验证器(Validator)
命令对象(Command请求参数绑定到的对象就叫命令对象)
表单对象(From Object提供给表单展示和提交到的对象叫表单对象)
1.2 spring和structs2的对比
spring mvc的入口是servlet,而Struts2是filter
spring mvc基于方法,而Struts2基于类,Struts2每次执行都会创建一个动作类
spring mvc使用更加简洁,同时支持jsr303,处理ajax的请求方便
(jsr303是一套javabean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在Javabean的属性上面,就可以在需要校验的时候进行校验了)
Struts2的ognl表达式使得页面的开发效率相比spring mvc更快些,但执行效率没有比就是他提升,尤其是Struts2的表单标签,远没有比HTML执行效率高
1.3环境开发
匹配前端适配器
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
1.4 入门案例的流程总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DOoabcT7-1575883619400)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\image-20191209130338073.png)]
0解决maven项目构建过慢的问题
archetypeCatalog internal
xml文件创建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UO6GCgkN-1575883619409)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\image-20191209133840415.png)]
版本锁定:
<properties>
<spring.version>5.0.2.RELEASE</spring.version>
</properties>
<version>${spring.version}</version>
1启动服务器,加载一些配置文件
DispatcherServlet对象创建
springmvc.xml被加载
HelloController被创建成对象
2发送请求
1.5 入门案例使用中的组件介绍
<mvc:annotation-driven/>
在springmvc的各个组件中,处理器映射器,处理器适配器,视图解析器称为springmvc的三大组件,使用<mvc:annotation-driven/>相当于配置了处理映射器和处理器适配器
1.6 RequestMapping注解的作用
作用:建立请求url和处理请求方法之间的关系
注解可以写在方法上,也可以写在类上,如果写在类上,访问方法的时候还要加上在类上的路径
(1)注解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PLu3sgiA-1575883619410)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568032777135.png)]
(2)访问
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o97lLtHQ-1575883619416)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568034161049.png)]
1.7 RequestMapping注解的属性
1)path和value意思一致,可以将path写成value,如果只写一个属性,path和value可以省略
2)name,用处不大,不用
3)method,决定请求方式
method={RequestMethod.POST}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3DpZTOq5-1575883619420)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568036257054.png)]
4)parms
用于限制请求参数的条件,它支持简单的表达式,要求参数的key和value必须配置的一模一样,例如
params={"accountName"} 要求请求参数必须有accountName
params={"money!=100"} 要求请求参数money不能是100
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AtnBppWF-1575883619421)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568036628892.png)]
请求
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O22KldhP-1575883619423)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\1568036662448.png)]
5)headers:请求头的信息
headers={"Accept"} 表示请求头必须要有Accept
而,如果要看请求头是否有这个属性,在浏览器中F12,选择network,选择All,然后重新发送一条请求,点进去就能看见,默认是有的
温故
前端控制器,处理器映射器,请求适配器,处理器,视图解析器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9zZ2xkFV-1575883619426)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\image-20191209165443994.png)]
1.项目结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wbAdrW2T-1575883619427)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\image-20191209162922121.png)]
2.springmvc.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--开启注解扫描-->
<context:component-scan base-package="cn.itcast"/>
<!--视图解析器-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--开启springMVC框架注解支持-->
<mvc:annotation-driven/>
</beans>
3.web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<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>/</url-pattern>
</servlet-mapping>
</web-app>
4.index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index</title>
</head>
<body>
<a href="hello">入门程序</a>
</body>
</html>
5.controller.class
@Controller
public class HelloController {
@RequestMapping(path = "/hello")
public String sayHello(){
System.out.println("hello springMVC");
return "success";
}
}
6.success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>success</title>
</head>
<body>
<h1>成功</h1>
</body>
</html>
turn “success”;
}
}
### 6.success.jsp
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>success</title>
</head>
<body>
<h1>成功</h1>
</body>
</html>
来源:CSDN
作者:Alan2019
链接:https://blog.csdn.net/Alan2019/article/details/103461776