Spring MVC案例

这个案例用模拟数据库结合Spring MVC开发,旨在更好地理解后面的整合mybatis框架。


步骤:

1 . 设计User类

public class User {
    private int id;
    private String name;
    private String pwd;
    public User() {

    }
    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
//省略set/get方法

2 . 写UserController类,构造方法里面模拟数据库信息

@Controller
@RequestMapping("/user")//窄化----分模块开发,团队协作,相当于Struts2的namespace
public class UserController {
    private List<User> list=new ArrayList<User>();
    public UserController() {
        list.add(new User(1,"张三","11111"));
        list.add(new User(2,"李四","22222"));
        list.add(new User(3,"王五","33333"));
    }

3 . 设计展示页面
首先写@RequestMapping跳转,里面封装数据

@RequestMapping("/list")
    public String list(ModelMap map){
        map.addAttribute("list", list);
        return "/list.jsp";//注意页面的跳转
    }

再者写JSP页面,JSP导入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

利用forEach循环结合HTML写出展示页面

 <body>
  <table width="80%" align="center">
  <tr>
    <td colspan="4" align="right"><a href="add.jsp">添加</a></td> 
  </tr>
  <tr>
    <td>编码</td>
    <td>姓名</td>
    <td>名字</td>
    <td>操作</td>
  </tr>
  <c:forEach items="${list }" var="bean">
  <tr>
    <td>${bean.id }</td>
    <td>${bean.name }</td>
    <td>${bean.pwd }</td>
    <td><a href="user/delete1.do?id=${bean.id }">删除1</a></td>
    <td><a href="user/delete2/${bean.id}.do">删除2</a></td>
     </tr>
  </c:forEach>
  </table>
  </body>

4 . JSP里面设计add和delete链接
add链接点击跳转到add.jsp,add.jsp写form提交数据交给@RequestMapping处理后给list.do,最后再次到展示页面

<body>
  <form action="user/add.do" method="post">
       姓名<input type="text"  name="name"><br>
      密码<input type="password"  name="pwd"><br>
    <input type="submit"  name="submit">
  </form>
  </body>
@RequestMapping("/add")
    //表单的name和pwd作为对象的属性提交给user参数
    public String add(User user){
        //获取user的id
        user.setId(list.get(list.size()-1).getId()+1);
        list.add(user);
        return "redirect:list.do";//最好重定向,如果是转发,请求数据还在,刷新后还会添加
    }

delete链接直接到@RequestMapping请求处理再给list.do最后到展示页面,上述delete2使用了restful风格

@RequestMapping("/delete1")
    public String delete(int id){
        for(int i=0;i<list.size();i++){
            if(list.get(i).getId()==id){
                list.remove(i);//id可能会变,比如list.get(3).getId()不一定为4,所以不能直接写list.remove(id-1)
                break;
            }
        }
        return "redirect:list.do";
    }
@RequestMapping("/delete2/{id}")
    public String delete2(@PathVariable("id")int id){
        for(int i=0;i<list.size();i++){
            if(list.get(i).getId()==id){
                list.remove(i);//id可能会变,比如list.get(3).getId()不一定为4,所以不能直接写list.remove(id-1)
                break;
            }
        }
        return "redirect:/user/list.do";
    }

调试记载:

1 .在一个类前面有@RequestMapping请求路径方法也有请求路径像这种就叫窄化。上述就是在/user下找/list.do
窄化—-分模块开发,团队协作,相当于Struts2的namespace

2 . 要注意页面的跳转,路径是否正确,也可以使用视图解析器,就不用再书写时候特别注意,因为视图解析器可以配置前后缀,但是上述这种不用视图解析器最常用和常见。

3 . jsp导入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

prefix是定义的标签前缀
uri是要用的标签库的一个资源定位
特别注意后面的uri地址,不要和下面的搞混了,特别小心

http://java.sun.com/jstl/core

4 .<!--items是迭代的集合对象,var是变量名,items取出的元素赋值给var变量名字 -->
<c:forEach items="${list }" var="bean">
<tr>
<!-- 通过get方法取出bean的值,所以bean对象这里就是User对象必须有get方法,否则成员变量private无法取出-->
<td>${bean.id }</td>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值