Springmvc
SpringMVC是Spring中的模块,它实现了mvc设计模式的web框架,首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映射器查找匹配该url的handler,并返回一个执行链,前端控制器再请求处理器适配器调用相应的handler进行处理并返回给前端控制器一个modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染并把数据装入到request域,返回给用户。
web.xml配置
<!--Springmvc 核心控制器 -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
applicationcontext.xml
<!--上下文注解-->
<context:annotation-config />
<!--扫描相应的包-->
<context:component-scan base-package="com.kxind.biz,com.kxind.controller" />
<!-- 配置框架提供的视图解析器 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
这样一个很简单的Springmvc就弄好了.接下来看如何使用吧.个人觉得比struts好用,就像servlet差不多..
controller 接收参数
- 根据参数名自动匹配
public String update (int goodsid)
update.html?goodsid=1,接收goodsid=1的值.
在方法中直接使用的ServletAPI
实体类中自动装箱
public String update (Goods good)
接收的参数必须和Goods对象的属性一致.会根据名字匹配自动装箱到Goods中去
public String update (@RequestParam("goodsId")int id)
接收一个goodsId的值存入id变量里
- RequestMapping("/{id}.html")
public String show(@pathVariable int id)
将路径当中的值 存入id变量
页面跳转
默认为转发给视图解析器解析路径.
重定向到其他页面 或者controller rediret:/ok.jsp或者redirect:/ok.html
转发: forward:/ok.jsp或者/ok.html(controller中)
数据传递:(作用域中存储数据)
- 使用serlvetApI中先数据传递
public String test(HttpServletRequest request){
request.setAttri("test","test")
return "test"
}
- 使用Springmvc的Model/map
public String test(Model model,Map<String,String> map){
Model.addAttribute("modeldate","model放的数据");
map.put("mapdate","map放的数据")
return "test"
}
${modeldate }
${mapdate }
- 使用Springmvc的ModelAndView
@RequestMapping(value="/index2",method=RequestMethod.GET)
public ModelAndView index2(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("name", "xxx");
modelAndView.setViewName("/user/index");
return modelAndView;
}
//返回的是一个包含模型和视图的ModelAndView对象;
//setViewName是添加的视图,给视图解析器
//Object给Model放值.
// /user/index这是restful式风格。
文件上传
//applicationContext.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
//执行代码
@RequestMapping("/fileup.html")
public String fileup(Goods good,
@RequestParam("goodsImg")MultipartFile goodsImg,
HttpServletRequest request
){ try{
goodsImg.transferTo(new File(request.getServletContext().getRealPath("/img/"+goodsImg.getOriginalFilename())));
}catch (Exception e){
e.printStackTrace();
}
return "ok";
}
中文处理
使用Springmvc提供的过滤器.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
SpringMVC常用的注解
Springmvc
SpringMVC是Spring中的模块,它实现了mvc设计模式的web框架,首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映射器查找匹配该url的handler,并返回一个执行链,前端控制器再请求处理器适配器调用相应的handler进行处理并返回给前端控制器一个modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染并把数据装入到request域,返回给用户。
web.xml配置
<!--Springmvc 核心控制器 -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
applicationcontext.xml
<!--上下文注解-->
<context:annotation-config />
<!--扫描相应的包-->
<context:component-scan base-package="com.kxind.biz,com.kxind.controller" />
<!-- 配置框架提供的视图解析器 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
这样一个很简单的Springmvc就弄好了.接下来看如何使用吧.个人觉得比struts好用,就像servlet差不多..
controller 接收参数
- 根据参数名自动匹配
public String update (int goodsid)
update.html?goodsid=1,接收goodsid=1的值.
在方法中直接使用的ServletAPI
实体类中自动装箱
public String update (Goods good)
接收的参数必须和Goods对象的属性一致.会根据名字匹配自动装箱到Goods中去
public String update (@RequestParam("goodsId")int id)
接收一个goodsId的值存入id变量里
- RequestMapping("/{id}.html")
public String show(@pathVariable int id)
将路径当中的值 存入id变量
页面跳转
默认为转发给视图解析器解析路径.
重定向到其他页面 或者controller rediret:/ok.jsp或者redirect:/ok.html
转发: forward:/ok.jsp或者/ok.html(controller中)
数据传递:(作用域中存储数据)
- 使用serlvetApI中先数据传递
public String test(HttpServletRequest request){
request.setAttri("test","test")
return "test"
}
- 使用Springmvc的Model/map
public String test(Model model,Map<String,String> map){
Model.addAttribute("modeldate","model放的数据");
map.put("mapdate","map放的数据")
return "test"
}
${modeldate }
${mapdate }
- 使用Springmvc的ModelAndView
@RequestMapping(value="/index2",method=RequestMethod.GET)
public ModelAndView index2(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("name", "xxx");
modelAndView.setViewName("/user/index");
return modelAndView;
}
//返回的是一个包含模型和视图的ModelAndView对象;
//setViewName是添加的视图,给视图解析器
//Object给Model放值.
// /user/index这是restful式风格。
文件上传
//applicationContext.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
//执行代码
@RequestMapping("/fileup.html")
public String fileup(Goods good,
@RequestParam("goodsImg")MultipartFile goodsImg,
HttpServletRequest request
){ try{
goodsImg.transferTo(new File(request.getServletContext().getRealPath("/img/"+goodsImg.getOriginalFilename())));
}catch (Exception e){
e.printStackTrace();
}
return "ok";
}
中文处理
使用Springmvc提供的过滤器.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
Springmvc常用的注解
- @Controller
@Constroller 通常作用在控制层,但是目前该功能与@Component 相同,负责注册一个bean 到spring 上下文中。
@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@@Repository作用在dao层,功能与@Component相同
@RequestMapping
注解为控制器指定可以处理哪些 URL 请求
@RequestBody
该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上
- @ResponseBody
@ResponseBody
@RequestMapping(value="/testjson.html",method = RequestMethod.GET)
public String handle( String body){
return "hello World!";
}
//页面输出Hello World!,常用于JSON传递
* @ModelAttribute
在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法
在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中
* @RequestParam
传递请求参数
* @PathVariable
把maping的参数写到上面去.