博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC(一) 简单代码编写,注解,重定向与转发
阅读量:4655 次
发布时间:2019-06-09

本文共 4812 字,大约阅读时间需要 16 分钟。

SpringMVC是什么

  SpringMVC是目前最好的实现MVC设计模式的框架,是Spring框架的一个分支产品,以SpringIOC容器为基础,并利用容器的特性来简化它的配置。SpringMVC相当于Spring的一个子模块,可以很好的和Spring结合起来进行开发,是JavaWeb开发者必须要掌握的框架。实现了MVC设计模式,MVC设计模式是一种常用的软件架构方式:以Controller(控制层),Model(模型层),View(视图层)三个模块分离的形式来组织代码。

SpringMVC的执行顺序

1、 用户发送请求至前端控制器DispatcherServlet

2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、 DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

5、 执行处理器(Controller,也叫后端控制器)。

6、 Controller执行完成返回ModelAndView

7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9、 ViewReslover解析后返回具体View

10、 DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

11、 DispatcherServlet响应用户

代码编写

1、配置web.xml文件

index.jsp
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
springmvc
/

3、配置springmvc.xml文件

  

 

3、编写测试类

@Controllerpublicclass ItemController {    @RequestMapping("/itemList")    public ModelAndView itemList() throws Exception {                List
itemList = new ArrayList<>(); //商品列表 Items items_1 = new Items(); items_1.setName("联想笔记本_3"); items_1.setPrice(6000f); items_1.setDetail("ThinkPad T430 联想笔记本电脑!"); Items items_2 = new Items(); items_2.setName("苹果手机"); items_2.setPrice(5000f); items_2.setDetail("iphone6苹果手机!"); itemList.add(items_1); itemList.add(items_2); //创建modelandView对象 ModelAndView modelAndView = new ModelAndView(); //添加model modelAndView.addObject("itemList", itemList); //添加视图 modelAndView.setViewName("/WEB-INF/jsp/itemList.jsp");// modelAndView.setViewName("itemsList"); returnmodelAndView; }}

 SpringMVC的注解

一、@RequestMapping

SpringMVC通过@RequestMapping注解将URL请求与业务方法进行进行映射。

参数:

1.value:指定URL请求的实际地址,是@RequestMapping的默认值。

2.method:指定请求的method类型, GET、POST、PUT、DELETE等。

3.params:指定request中必须包含某些参数值,否则无法调用该方法。

@RequestMapping(value="paramsTest",params={"name","id=10"})    public String paramsTest(){        System.out.println("paramsTest");        return "index";    }

 

二、参数绑定:

params是对URL请求的参数进行限制,不满足条件的URL无法到达业务方法,这个特性并不是我们开发中常用的,我们需要用到的是在业务方法中获取URL的参数,实现这一步很简单。

1.在业务方法定义时声明参数列表。

2.给参数列表添加@RequestParam注解。

@RequestMapping(value="paramsBind")    public String paramsBind(@RequestParam("name") String name,@RequestParam("id") int id){        System.out.println(name);        int num = id+10;        System.out.println(num);        return "index";    }

三、映射Cookie:

SpringMVC通过映射可以直接在业务方法中获取Cookie的值。

@RequestMapping("/cookieTest")    public String getCookie(@CookieValue(value="JSESSIONID") String sessionId){        System.out.println(sessionId);        return "index";    }

使用pojo绑定参数

SpringMVC会根据请求参数名和pojo属性名进行自动匹配,自动为该对象填充属性值。并且支持级联属性。

 1.创建实体类Address,User并进行级联设置。

public class Address {    private int id;    private String name;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}
public class User {    private int id;    private String name;    private Address address;    public Address getAddress() {        return address;    }    public void setAddress(Address address) {        this.address = address;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

 

2.创建addUser.jsp。

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
Insert title here
编号:
姓名:
地址:

 

3.业务方法。

@RequestMapping("/addUser")    public String getPOJO(User user){        System.out.println(user);        return "index";    }

重定向和转发

//重定向    @RequestMapping("redirectTest")    public String redirectTest(){        return "redirect:/index.jsp";    }//转发    @RequestMapping("forwardTest")    public String forwardTest(){        return "forward:/index.jsp";    }

 

转载于:https://www.cnblogs.com/JiangLai/p/9566424.html

你可能感兴趣的文章
记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
查看>>
mechanize (1)
查看>>
FactoryBean
查看>>
Coolite动态加载CheckboxGroup,无法在后台中获取
查看>>
如何在我们项目中利用开源的图表(js chart)
查看>>
nfs服务器工作原理
查看>>
C3P0连接池工具类使用
查看>>
SVN常用命令备注
查看>>
孩子教育
查看>>
解决Cacti监控图像断断续续问题
查看>>
结构体的传参理解成员的存储方式
查看>>
python 进程与线程(理论部分)
查看>>
什么是API
查看>>
[shiro学习笔记]第二节 shiro与web融合实现一个简单的授权认证
查看>>
强名称程序集(strong name assembly)——为程序集赋予强名称
查看>>
1028. List Sorting (25)
查看>>
BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划
查看>>
ubuntu 重启命令,ubuntu 重启网卡方法
查看>>
Linux的学习:
查看>>
JavaScript中的原型继承原理
查看>>