Spring Mvc复习笔记

本文围绕 Spring MVC 展开,介绍了其工作原理,包括客户端请求提交、DispatcherServlet 处理等流程。还阐述了基于注解的控制器类编写方法,接收请求参数的方式,转发和重定向的区别,以及类型转换、数据绑定、EL 与 JSTL 等相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Mvc

1.Spring mvc工作原理
1.客户端将请求提交到DispatcherServlet
2.由DispatcherServlet寻找一个或多个HanderMappering找到处理请求的controller
3.DispatcherServlet将请求提交到Controller
4.Controller调用业务逻辑处理后,返回ModelandView
5,Dispatcher寻找一个或多个ViewResolver,找到modelandview指定的视图
5.视图负责将结果返回给客户端
2.
2.基于注解的控制器类
springMVC使用扫描机制找到控制器类
<context:component-sacn base-package=“controller”/>
如何编写?
1.方法级别注解
@controller写在请求处理方法类的上方
@RequestMapping(value="/")写在方法上方 包括模块和功能点
2.类级别注解
@controller写在请求处理方法类的上方
@RequestMapping(value="/模块")写在类名上方
@RequestMapping(value="/功能点")写在方法上方
3.接收请求参数的方式
(1) 通过实体bean接收请求参数,实体bean属性和表单元素同名。
(2) 通过处理方法的形参接收请求参数,处理方法的形参和表单元素同名。
(3) 通过HttpServletRequest接收请求参数
(4) 通过@ModelAttribute接收请求参数
@modelAttribute(“user”)与model.addAttribute(“user” user)功能相同

4.转发和重定向区别
(1) 转发是服务器行为,重定向是客户端行为;
(2) 转发:地址栏显示第一次访问的路径。
(3) 转发:浏览器只发出过一次访问请求。
(4) 重定向:地址栏显示重定向的路径,发生变化。
(5) 重定向:浏览器做了两次访问请求。
增删查改

@Controller   (1分)
@RequestMapping("/goods") (2分)
public class GoodsController { (1分)
	 
	@Autowired
	private GoodsService goodsService;

	(8分)
	@RequestMapping(value = "/input")
	public String inputGoods(Model model) {		 
		model.addAttribute("goods", new Goods());		 
		return "userAdd";
	}
	(8分)
	@RequestMapping(value = "/add")
	public String addGoods(@ModelAttribute Goods goods, Model model) {
		if (goodsService.addGoods(goods)) {
		 			return "redirect:/goods/list";
		} else {
		 			return "addGoods";
		}
	}
}

3.类型转换和格式化
converter和formatter的区别:
converter可以是从任意源类型转换任意目标类型,内置类型多
formatter是从string转换成任意类型,被拆成printerconverter和parserconverter 常用
4.数据绑定和表单标签库
数据绑定的作用:1.不需要手动将string转换成所需要的类型
2.输入验证失败后 会生成新的html表单,无需重新输入字段
数据绑定的几层含义:1.绑定请求参数输入值到领域模型
2.模型数据到视图的绑定
3.模型数据到表单元素的绑定

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<form:form modelAttribute="goods"    action="goods/add"> (3分)
       <form:input path="goodsname"/> 
        <form:input path="goodsprice"/>
 		<form:input path="goodsnum"/>
       <input id="submit" type="submit" value="添加">       
</form:form>

5.EL与JSTL
EL
默认会从 page,request,session,application获取
如 ${requestscope.array[0].name}
JSTL
标签名

<%@  taglib uri="" prefix="c"%>
<table border="2">
<c:forEach var="i" begin="1" end="9" > 
	<tr>
	<c:forEach var="j" begin="1" end="${i}" >
		<td>
		${i}  *  ${j} = ${i*j} &nbsp;&nbsp;
		</td>
	</c:forEach>
	</tr>
</c:forEach>
</table>

varStatus="status"代表迭代变量的状态,包括count,index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值