springMVC_1 springmvc概述以及入门案例

丶灬走出姿态 提交于 2019-12-09 18:13:18

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>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!