springmvc简介及其应用

本文详细介绍了SpringMVC的原理与应用,包括其作为Spring框架的一部分, MVC设计模式,运行流程,以及开发步骤。内容涵盖从创建项目、配置到控制器方法的返回值类型,如ModelAndView、String、void等。同时讲解了参数绑定、中文乱码处理、静态资源、文件上传、@RequestBody和@ResponseBody注解的使用,以及@RequestParam、@PathVariable、拦截器的原理和实现。最后提到了SpringMVC中的异常处理方法和全局拦截器的执行顺序。
摘要由CSDN通过智能技术生成

1. springmvc简介

  • 1.1springmvc是什么
    • springmvc是spring框架的一个模块。
    • Spring WebMVC是基于Servlet API构建的原始Web框架
    • 从一开始就包含在Spring框架中。
    • springmvc是基于一个mvc设计模式的web框架。
  • 为什么要使用springMVC?
  • MVC设计模型
  • springMVC的强大之处
  • springMVC优势
  • springMVC的运行原理
  • Springmvc运行原理流程
  • 组件说明
  • 视图解析器
    以上参考:https://www.cnblogs.com/fengru/p/5730174.html
    在这里插入图片描述

2. springmvc开发步骤

  1. 新建Dynamic Web Project
  2. 添加springmvc所依赖的jar包
    在这里插入图片描述
  3. 在项目的src下添加springmvc配置文件
    springmvc-servlet.xml
  4. 修改web.xml文件,在web.xml文件中增加DispatcherServlet配置
 <servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <init-param>
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath:springmvc-servlet.xml</param-value>
 </init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
  1. 新建Controller类
@Controller
public class PrintDateController {
@RequestMapping(value="/printDate")
public String printDate(HttpServletResponse response) throws IOException{
  response.getWriter().println(new Date());
  return null;
}
}
  1. 测试
    http://localhost/SpringMVC_001/printDate
    显示:Mon Apr 22 17:24:18 CST 2019

3. controller方法的返回值类型
controller方法的返回值类型包括:
1.ModelAndView
2.String
3.void

@Controller
public class MethodReturnTypeController {
   
  //类型1:返回为对象类型
 @RequestMapping(value="/modelAndView")
 public ModelAndView modelAndView(){
   
     //创建ModeAndView对象
     ModelAndView mv=new ModelAndView();
     //ModeAndView的存储范围和request一样
     mv.addObject("hill", "hello");
     //设置逻辑视图名   真正的视图名://WEB-INF/jsp/hello.jsp
     mv.setViewName("hello");
     return mv;
 }
 
 //类型2:返回为String类型
 @RequestMapping(value="/returnStringForWard")
 public String returnStringForWard(){
   
     //return "forward://WEB-INF/jsp/hello.jsp";
     return "forward:index.jsp";
 }
 //当注解中只有一个value值,可以直接写url地址值
 @RequestMapping("/returnStringRedirect")
 public String returnStringRedirect(){
   
     return "redirect:index.jsp";
 }
 @RequestMapping("/returnStringViewName")
 public String returnStringViewName(){
   
     //hello是逻辑视图,真正视图是://WEB-INF/jsp/hello.jsp
     return "hello";
 }
 //类型2:返回为void类型
 @RequestMapping("/returnVoidForWard")
 public void returnVoidForWard(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
   
     request.getRequestDispatcher("index.jsp").forward(request,response);
 }
 @RequestMapping("/returnVoidRedirect")
 public void returnVoidRedirect(HttpServletResponse response) throws IOException{
   
    response.sendRedirect("index.jsp");
 }
 @RequestMapping("/returnVoidJson")
 public void returnVoidJson(HttpServletResponse response) throws IOException{
   
     //创建用户对象
     User user = new User();
     user.setId(1);
     user.setUsername("admin");
     user.setPassword("admin");
     response.getWriter().println(JSONObject.fromObject(user).toString());
 } 
}

4. 参数绑定
参数绑定指的是将请求参数中的值绑定到controller方法参数的过程。
参数绑定支持的数据类型包括:
默认数据类型:HttpServletRequest、HttpServletResponse、HttpSession、
Model/ModelMap:ModelMap是Model接口的实现类
Model:模型,保存数据的对象就是Model,可以将Model当成一个和request session一样的容器

  • 1.基础数据类型 byte short int long char boolean float double
  • 2.基础数据类型的封装类 Byte Short Integer Long Character Boolean Float Double
  • 3.String
public String paramBinding(String code, String name, Double price, Integer count, Integer status,String description){
   
	   System.out.println(code + "\t" + name + "\t" + price + "\t" + count + "\t" + status + "\t" + description);
	   return null;
   }
  • 4.自定义java类型
 @RequestMapping("/paramBindingDefaultType")
   public String paramBindingDefaultType(HttpServletRequest request,HttpServletResponse response,HttpSession session,Model model){
   
	   String code = request.getParameter("code");
	   String name = request.getParameter("name");
	   System.out.println("code"+"\t"+"name");
	   model.addAttribute("code", code);
	   model.addAttribute("name", name);
	   return "forward:index.jsp";
   }
  • 5.自定义java类型的封装类
@RequestMapping("/paramBindingPackType")
   public String paramBindingPackType(Product product,Model model){
   
	   model.addAttribute("product", product);
	   return "forward:index.jsp";
   }
   
   @RequestMapping("/paramBindingPackObjectType")
   public String paramBindingPackObjectType(Order order,Model model)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值