SpringMVC概念以及接收数据和响应数据方式
SpringMVC1.概念springmvc是一种web层mvc框架,它是spring的一个模块,拥有spring的特性。springmvc分离了控制器、模型对象、分派器以及处理程序对象的角色。2.执行流程1)用户发送请求,被前端控制器(中央处理器)DipatcherServletRequetMappderhandler(处理器映射器),解析映射路径 @RequestMapping2)反馈给前端控
·
SpringMVC
1.概念
springmvc是一种web层mvc框架,它是spring的一个模块,拥有spring的特性。
springmvc分离了控制器、模型对象、分派器以及处理程序对象的角色。
2.执行流程
1)用户发送请求,被前端控制器(中央处理器)DipatcherServlet
RequetMappderhandler(处理器映射器),解析映射路径 @RequestMapping
2)反馈给前端控制器,---解析Controller ---里面方法(handler)
3)再次通过前端控制器---->RequestMapperAdpater:处理器适配器 调用里面的方法
4) 解析方法----底层原理: ModelAndView:模型视图组件--->设置视图 以及绑定数据
return "xx" ;
5)告知前端控制器---->通过视图解析器---解析视图路径---
6)响应给用户
3.三大组件
DispatcherServlet:前端控制器
RequetMappderhandler(处理器映射器
RequestMapperAdpater处理器适配器
配置springmvc视图解析器
<mvc:view-resolvers>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀和后缀-->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</mvc:view-resolvers>
Springmvc接收前台请求参数
方式1: 路径携带参数
url?参数名称1=参数值1&参数名称2=值2
注意事项: 当前方法形式参数名称必须和路径上的参数名称一致,否则获取不到
public String getRequestFirst(Integer id){
return " " ;
}
方式2:直接HttpServletRequest对象获取参数 通过参数名称获取value
路径携带参数
url?参数名称1=参数值1&参数名称2=值2
public String secondRequest(HttpServletRequest request) {
String id = request.getParameter("id");
return " " ;
}
方式3:前端路径携带参数 它和方法形参参数名称不一致
使用springmvc提供的注解@RequetParam将路径上的参数绑定当形式参数名称
url?参数名称1=参数值1&参数名称2=值2
public String thirdRequest(@RequestParam("sid") Integer id){
return " " ;
}
方式4:
handler(在springmvc称为 "方法") ,方法形式参数直接接收一个实体
路径携带参数
url?参数名称(需要和实体的属性名称一致)=值&参数名称2=值...
注意事项:实体类型的属性需要和路径携带参数的参数名称一致
public String fourRequest(User user){
return " " ;
}
方式5: 路径直接传参(并非路径携带参数)
使用springMVC注解:@PathVariable("值")
@RequestMapping("/sixReq/{id}/{username}/{address}") //结合RequestFul风格去写
public String sixRequest( @PathVariable("id") Integer id){
return " " ;
}
方式6: 接收复杂数据 List集合
tomcat8.0以上的版本不识别这种参数,出现400错误
Springmvc不识别这种传参方式,只支持tomcat比较低版本
需要在tomcat解压目录中conf目录---该server.xml配置文件
给port="8080" 后面配置三个属性
urlEcnoding="utf-8"
路径上的特殊符号
relaxedPathChars="|{}[],%"
relaxedQueryChars="|{}[],%"
public String sevenRequest(UserList userList){
return " " ;
}
方式7: 接收数组方式
方法的形式参数名称需要和表单中的name属性一致
public String getEightRequest(Integer[] hobby){
if(hobby!=null){
for(Integer id:hobby){
System.out.println("id:"+id);
}
}
return " " ;
}
方式8: 使用json数据传参
上面的方式:都是默认get提交
接收前台提交的Json 数据,控制器具体的方法中需要将json数据封装到实体中
必须在当前形式参数上---springmvc注解 @RequestBody
//1)导入jar包:springmvc提供的jackson (三个包)
//2)当前提交方式 Post提交
@RequestMapping(value = "/getJsonParamter",method = RequestMethod.POST) //提交方式 post
public String getRequestJsonParameter(@RequestBody User user){
return " " ;
}
springmvc处理响应的参数
方式1: 返回String: 通过视图解析器解析
传统方式:借助底层servlet-api完成的
public String firstResponse(HttpServletRequest request, HttpServletResponse response) {
//1)通过requset对象接收前台参数
//2)request本身域对象,里面存储数据
request.setAttribute("name","name");
return " " ;
}
方式2: 返回值String
Model:类似于 域对象
可以给当前具体的属性名称绑定内容 (Springmvc提供的Model)
PageContext
HttpServletRequet
HttpSession ( 钝化: 底层会向会向磁盘上文件中存储存储的内容,进行加密
活化:从磁盘上文件获取的内容 )
ServletContext setAttribute("属性名称",Object obj)
public String secondResponse(Model model){
model.addAttribute("name","name") ;
return " " ;
}
方式3:返回值String
方法的形式参数: HttpSession 域对象,在一次会话中有效
public String thirdResponse(HttpSession session){
session.setAttribute("name","name") ; //底层钝化的过程
return " " ;
}
方式4:返回值是ModelAndView :视图模型组件
public ModelAndView fourResponse(){
//创建视图模型组件
ModelAndView modelAndView = new ModelAndView() ;
//设置模型数据
modelAndView.addObject("money",13999) ;//相当于四个域对象 给里面绑定数据对应的内容
//设置返回视图 交给前端控制器DispatcherServlet 借助于它来请求转发
modelAndView.setViewName("hello");//参数为视图的路径,视图解析器解析前缀和后缀
return modelAndView ;
}
方式5:返回json数据 给前端
//springmvc注解
@ResponseBody //将现在的user对象转换成json
public User fiveResponse(){
//模拟数据
//封装User对象
User user = new User() ;
user.setId(1) ;
return user ;
}
更多推荐



所有评论(0)