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>

 

posted @   码农公子的幸福生活  阅读(44)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示