SpringMVC-狂神笔记

参考链接:狂神说SpringMVC笔记 - 时移之人 - 博客园 (cnblogs.com)


第一节:

MVC:前端+路由+后端实现

prefix:前缀

suffix:后缀

  • @Controller是为了让Spring IOC容器初始化时自动扫描到;

  • @RequestMapping是为了映射请求路径,这里因为类与方法上都有映射所以访问时应该是/HelloController/hello;

实现步骤其实非常的简单:

  1. 新建一个web项目

  2. 导入相关jar包

  3. 编写web.xml , 注册DispatcherServlet

  4. 编写springmvc配置文件

  5. 接下来就是去创建对应的控制类 , controller

  6. 最后完善前端视图和controller之间的对应(方法中声明Model类型的参数是为了把Action中的数据带到视图中)

  7. 测试运行调试.

注:DispatcherServlet 是 SpringMVC统一的入口,所有的请求都通过它。DispatcherServlet 是前端控制器,配置在web.xml文件中,Servlet依自已定义的具体规则拦截匹配的请求,分发到目标Controller来处理。

使用springMVC必须配置的三大件(注解或者xml):

处理器映射器、处理器适配器、视图解析器

ModelAndView:模型视图类(方法返回的结果是视图的名称hello,加上配置文件(视图解析器)中的前后缀变成WEB-INF/jsp/hello.jsp。)

       //ModelAndView 模型和视图
       ModelAndView mv = new ModelAndView();

       //封装对象,放在ModelAndView中。Model
       mv.addObject("msg","HelloSpringMVC!");
       //封装要跳转的视图,放在ModelAndView中
       mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
       return mv;

第三节:

  • POST、DELETE、PUT、GET:添加、 删除、修改、查询

RESTful风格:

  • 在Spring MVC中可以使用  @PathVariable 注解,让方法参数的值对应绑定到一个URI模板变量上。
@Controller
public class RestFulController {
   //映射访问路径
   @RequestMapping("/commit/{p1}/{p2}")
   public String index(@PathVariable int p1, @PathVariable int p2, Model model){
       
       int result = p1+p2;
       //Spring MVC会自动实例化一个Model对象用于向视图中传值
       model.addAttribute("msg", "结果:"+result);
       //返回视图位置(视图解析器进行解析,找到对应的文件)
       return "test";
       
  }  
}

使用method属性指定请求类型

用于约束请求的类型,可以收窄请求范围。指定请求谓词的类型如GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE等

//映射访问路径,必须是POST请求
@RequestMapping(value = "/hello",method = {RequestMethod.POST})
public String index2(Model model){
   model.addAttribute("msg", "hello!");
   return "test";
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

所有的地址栏请求默认都会是 HTTP GET 类型的。


第四节:

结果跳转方式

  • ModelAndView:页面 : {视图解析器前缀} + viewName +{视图解析器后缀}
  • ServletAPI:通过HttpServletResponse进行输出、重定向、转发
@RequestMapping("/result/t1")
   public void test1(HttpServletRequest req, HttpServletResponse rsp) throws IOException {
       rsp.getWriter().println("Hello,Spring BY servlet API");
  }

   @RequestMapping("/result/t2")
   public void test2(HttpServletRequest req, HttpServletResponse rsp) throws IOException {
       rsp.sendRedirect("/index.jsp");
  }

   @RequestMapping("/result/t3")
   public void test3(HttpServletRequest req, HttpServletResponse rsp) throws Exception {
       //转发
       req.setAttribute("msg","/result/t3");
       req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,rsp);
  }
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
  • 通过SpringMVC来实现转发和重定向 - 无需视图解析器;
@RequestMapping("/rsm/t1")
   public String test1(){
       //转发
       return "/index.jsp";
  }
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

数据提交:

@RequestMapping("/hello") 
public String hello(@RequestParam("username") String name){//提交数据 : http://localhost:8080/hello?username=kuangshen
public String hello(String name){//提交数据 : http://localhost:8080/hello?name=kuangshen

//参数是实体类
public class User {
   private int id;
   private String name;
   private int age;
   //构造
   //get/set
   //tostring()
}

@RequestMapping("/user")//提交数据 : http://localhost:8080/mvc04/user?name=kuangshen&id=1&age=15
public String user(User user){
   System.out.println(user);
   return "hello";
}
//说明:如果使用对象的话,前端传递的参数名和对象名必须一致,否则就是null。
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

数据回显:

ModelAndView、ModelMap、Model都可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值