springmvc 总结
springmvc 的请求过程:
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping(处理器映射器)查找 Handler,可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
第八步:前端控制器请求视图解析器去进行视图解析
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染( 视图渲染将模型数据(在ModelAndView对象中)填充到request域)
第十一步:前端控制器向用户响应结果
controller指定的是类,handler指定的类中的一个方法。
@requestMapping:
作用
1.定义controller方法对应的url,进行处理器映射使用
在方法名上面添加代表 访问时 url映射
2.窄化请求映射-作为父路径
为了对url进行分类管理,在class上面添加 访问时 根路径+url映射
3. 限制http请求方法
出于安全性考虑,对http的链接进行方法限制。
如果限制请求为post方法,进行get请求
属性:
1、 value, method;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式;
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
@RequestMapping(value="{userId}/delete.do",method=RequestMethod.DELETE)
2、 consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3、 params,headers;
params: 指定request中必须包含某些参数值时,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
Controller中参数绑定
简单类型:基本数据类型+String类型
Httprequest request 中获取- Request.getParameter()
Public ModelAndView addUser_request(ModelAndView mv,HttpServletRequest request){
String name = request.getParameter("name");
System.out.println(name);}
形参传值 适合参数较少-接受的name必须是表单中一样的 name
public ModelAndView addUser_param(ModelAndView mv,String name,int age,String birth){
System.out.println(age);}
接受的会全部转化为string类型
通过@RequestParam对简单类型的参数进行绑定。表单name 与形参名一致
如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。
如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。
属性:
Value -name
Required-true
Public String addUser(ModelAndView mv ,@requestParam(value=”id”,required) Integer userId){}
以对象的方式来接受参数-封装对象为javabean
public ModelAndView addUser_obj(ModelAndView mv,User user){
System.out.println(user.getName());}
日期类型的绑定
1.需要自定义一个转换器
2.需要在springmvc中配置转换器
数据回显-向页面中传递参数-返回视图
提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。
1.HttpServletRequest HttpSessionRequest.setAttrbute(“”)
Session.setAttribute()
Return mv;//视图
2 .ModleAndView
mv.addObject()
return mv;
3 .Model返回值 string
Model.addAttribute()
Return”/success.jsp”
4. json
使用注解@responseBody对象
可以将controller中的对象以json字符串的方式传给jsp页面
文件的上传与下载
前端form表单必须添加 enctype="multipart/form-data"属性,并且使用POST提交
创建图片虚拟 目录 存储图片
视图解析器
Webinf 下的文件不能通过浏览器来访问,但是可以通过项目中的请求转发的方式来访问
视图解析器简化访问路径 经过视图解析器会添加前缀和后缀
<bean
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".jsp" />
<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/>
</bean>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!