SpringMVC学习笔记

一、BaseServlet

二、SpringMVC概述


Spring MVC 是由Spring官方提供的基于MVC设计理念的web框架
Spring MVC是基于Servlet封装的用于实现MVC控制的框架,实现前端和服务端的交互

2.1 springMVC的优点

  • 严格遵守了MVC分层思想
  • 采用了松耦合、插件式结构;相比较于我们封装的BaseServlet以及其它的一些MVC框架来说更灵活、根据扩展性
  • SpirngMVC是基于Spirng的扩展、提供了一套完善的MVC注解
  • SpirngMVC在数据绑定、视图解析都提供了多种处理方式,可灵活配置
  • SpringMVC对RESTful URL设计方法提供了良好的支持

2.2 springMVC本质工作

  • 接收并解析请求
  • 处理请求
  • 数据渲染、响应请求

三、SpringMVC框架部署


3.1 基于Maven创建一个web工程

3.2 添加SpringMVC依赖

  • spring-context
  • spring-aspects
  • spring-jdbc
  • spring-web
  • spring-webmvc
  • spring-test
<dependencies>
    <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>5.2.13.RELEASE</version>
	</dependency>	
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-aspects</artifactId>
		<version>5.2.13.RELEASE</version>
	</dependency>
    
    <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>
		<version>5.2.13.RELEASE</version>
	</dependency>
    <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-test</artifactId>
		<version>5.2.13.RELEASE</version>
	</dependency>
    <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-web</artifactId>
		<version>5.2.13.RELEASE</version>
	</dependency>    
    <dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>5.2.13.RELEASE</version>
	</dependency>
  </dependencies>

3.3 创建SpringMVC配置文件

  • 在resources目录下创建spring-servlet.xml的文件
  • 添加MVC的命名空间
<?xml version="1.0" encoding="UTF-8"?>
<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: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/mvc
      http://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<context:annotation-config/>
	<context:component-scan base-package="com.company"/>
	<!-- 声明MVC使用注解驱动 -->
	<mvc:annotation-driven/>

</beans>

3.4 在web.xml中配置SpringMVC的前端控制器

SpringMVC提供了一个名为DispatcherServlet的前端控制器,用于拦截客户端的请求,并将请求分发给SpringMVC的各个组件处理

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
       				http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        version="3.1">

	<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:spring-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringMVC</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
</web-app>

三、SpringMVC的框架使用


在SpringMVC中,我们把接收用户请求、处理用户请求的类称之为Controller(控制器)

3.1 创建Controller

3.1.1 创建控制器类

  • 创建一个名为com.company.controller的包(包需要在Spring注解扫描的范围内)
  • 创建一个类(无需做任何的继承和实现)
  • 在类上添加@Controller注解,表示该类是控制器
  • 在类上添加@RequestMapping(“url”)声明此控制器类的请求url
@Controller
@RequestMapping("/book")
public class BookController {
   

}

3.1.2 在控制器类中定义处理请求的方法

  • 在一个控制器类中可以定义多个方法处理不同的请求
  • 在方法上添加@RequestMapping(“url”)声明此方法处理的请求url
@Controller
@RequestMapping("/book")
public class BookController {
   

	@RequestMapping("/add")
	public void add(){
   
		System.out.println("---book add");
	}
	
	@RequestMapping("/list")
	public void list(){
   
		System.out.println("---book list");
	}
}

3.1.3 访问

  • http://localhost:8080/springmvc-demo/book/list
  • http://localhost:8080/springmvc-demo/book/add

3.2 静态资源配置

静态资源:html、css、js、图片、音频、视频等文件

3.2.1 /*和/的区别

  • /* 拦截所有HTTP请求,包括.jsp的请求。都作为控制器类的请求进行处理
  • / 拦截所有HTTP请求,但不包括.jsp的请求。但不会放行静态资源请求(html/css/js/图片)

3.2.2 静态资源放行配置

  • 在SpringMVC的配置文件添加如下静态资源放行配置
<!-- 配置静态资源放行 -->
<mvc:resources location="/css/" mapping="/css/**"></mvc:resources>
<mvc:resources location="/pages/" mapping="/pages/**"></mvc:resources>
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
<mvc:resources location="/imgs/" mapping="/imgs/**"></mvc:resources>

3.3 前端提交数据到控制器

book-add.jsp表单的action属性设置控制器类的url和对应方法的url的组合路径

3.3.1 表单提交

  • 表单提交:输入框需要提供name属性,SpringMVC控制器是通过name属性取值
<body>
	<h3>添加图书</h3>
	<form action="book/add" method="post">
		<p>图书名称:<input type="text" /></p>
		<p>图书作者:<input type="text" /></p>
		<p>图书价格:<input type="text" /></p>
		<p><input type="submit" value="提交" /></p>
	</form>
</body>

3.3.2 URL提交

  • URL提交:
<a href="book/add?bookName=Java"></a>

3.3.3 AJAX提交

  • AJAX提交:请求行、请求头、请求体都可以用来传值
<input type="button" value="ajax提交" id="btn1"/>
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
	$("#btn1").click(function(){
     
		var obj={
     };
		obj.bookName="JAVA";
		obj.bookAuthor="张三";
		obj.bookPrice=3.33;
		
		$.ajax({
     
			url:"book/add",
			type:"post",
			headers:{
     },
			contentType:"application/json",
			data:obj,
			success:function(res){
     
				console.log(res);
			}
		});
	});
</script>

3.4 控制器接收前端提交数据

3.4.1 请求行传值

在这里插入图片描述

  • 表单提交
  • URL提交
  • $.ajax()请求的url传值
  • . p o s t ( ) / .post()/ .post()/.get()请求的url传值

@RequestParam注解用于接收请求行传递的数据

  • 前端提交数据
<form action="book/add" method="post">
	<p>图书名称:<input type="text" name="bookName"/></p>
	<p>图书作者:<input type="text" name="bookAuthor"/></p>
	<p>图书价格:<input type="text" name="bookPrice"/></p>
	<p><input type="submit" value="提交" /></p>
</form>
  • 控制器接收数据
/*接收请求行数据*/
@RequestMapping("/add")
public void add(@RequestParam("bookName")String a,
				@RequestParam("bookAuthor")String b,
				@RequestParam("bookPrice")double c){
   
	System.out.println("---book add");
	System.out.println(a);
	System.out.println(b);
	System.out.println(c);
	}

注意如果控制器方法中接收数据的参数与请求行传值的key一致,则不需要加@RequestParam注解

3.4.2 请求头传值

在这里插入图片描述

@RequestHeader注解用于接收请求头传值

  • 前端提交数据
  • 36
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值