MVC设计模式简单示例

示例

此例仅是展示MVC架构模式,不具有完整性。只是能了解一下这种MVC的模式。

本例实现了一个简易的用户添加与删除的功能


本例的目录结构

在这里插入图片描述


UserServlet

package com.cheeny.controller;

import com.cheeny.entity.User;
import com.cheeny.service.UserService;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collection;

public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String method = req.getParameter("method");
        UserService userService = new UserService();
        if(method == null)
            method = "getAll";
        switch (method){
        //保存或修改
            case "saveOrUpdate":
                String idStr = req.getParameter("id");
                int id  = Integer.parseInt(idStr);
                String name = req.getParameter("name");
                String ageStr = req.getParameter("age");
                int age = Integer.parseInt(ageStr);
                User user = new User(id,name,age);
                userService.saveOrUpdate(user);
                resp.sendRedirect("user.do?method=getAll");
                break;
            case "getAll":			//显示所有
                Collection map = userService.getAll();
                req.setAttribute("map",map);
                req.getRequestDispatcher("show.jsp").forward(req,resp);
                break;
            case "deleteById":		//删除
                String idStr2 = req.getParameter("id");
                int id2 = Integer.parseInt(idStr2);
                userService.deleteById(id2);
                resp.sendRedirect("user.do?method=getAll");
                break;
            case "getById":			//得到Id
                String idStr3 = req.getParameter("id");
                int id3 = Integer.parseInt(idStr3);
                User user1 = userService.getById(id3);
                req.setAttribute("user",user1);
                req.getRequestDispatcher("update.jsp").forward(req,resp);
                break;
        }
    }
}


User

package com.cheeny.entity;

public class User {
    private int id;
    private String name;
    private int age;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public User() {
    }

    public User(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    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 int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


UserService

package com.cheeny.service;

import com.cheeny.entity.User;

import java.util.*;

public class UserService {
    private static Map<Integer,User> map;
    static {
        map = new HashMap<>();
        map.put(1,new User(1,"张三",33));
        map.put(2,new User(2,"李四",23));
        map.put(3,new User(3,"王五",31));
    }
    public Collection<User> getAll(){
        return map.values();
    }
    //添加方法
/*    public  void add(User user){
        map.put(user.getId(),user);
    }*/
	
	//删除方法
    public void deleteById(int id){
        map.remove(id);
    }
	
	//得到编号
    public User getById(int id){
        return map.get(id);
    }

	//修改方法
/*    public void updatate(User user){
        map.put(user.getId(),user);
    }*/

	//代码重构,整合add与update方法
    public void saveOrUpdate(User user){
        map.put(user.getId(),user);
    }
}


add.jsp

<%--
  Created by IntelliJ IDEA.
  User: 73981
  Date: 2019/12/3
  Time: 21:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="user.do?method=saveOrUpdate" method="post">
    用户Id:<input type="text" name="id"><br>
    用户姓名:<input type="text" name="name"></br>
    用户年龄:<input type="text" name="age"></br>
<input type="submit" value="提交">
</form>
</body>
</html>


show.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.cheeny.entity.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
  Created by IntelliJ IDEA.
  User: 73981
  Date: 2019/12/3
  Time: 20:30
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(function(){
            $(".delete").click(function () {
                if(confirm("是否确定删除?")){
                    var index = $(".delete").index(this);
                    var td = $(".id").eq(index);
                    var id = td.text();
                    location.href="user.do?method=deleteById&id="+id;
                }
            });
        });
    </script>
</head>
<body>
    <table border="1" width="80%">
        <tr>
            <th>用户编号</th>
            <th>用户姓名</th>
            <th>用户年龄</th>
            <th>操作</th>
            <c:forEach items="${map}" var="user">
                <tr>
                    <td class="id">${user.id}</td>
                    <td>${user.name}</td>
                    <td>${user.age}</td>
                    <td>
                        <a href="user.do?method=getById&id=${user.id}">修改</a>
                        <a class="delete" href="javascript:void()">删除</a>
                    </td>
                 </tr>
            </c:forEach>
        </tr>
    </table>
    <a href="add.jsp">添加用户</a>
</body>
</html>


update.jsp

<%--
  Created by IntelliJ IDEA.
  User: 73981
  Date: 2019/12/4
  Time: 22:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="user.do?method=saveOrUpdate" method="post">
        用户编号:<input type="text" name="id" value="${requestScope.user.id}" readonly="readonly"/><br/>
        用户姓名:<input type="text" name="name" value="${requestScope.user.name}"/><br/>
        用户年龄:<input type="text" name="age" value="${requestScope.user.age}"/><br/>
        <input type="submit" value="修改"/>
    </form>
</body>
</html>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>user</servlet-name>
        <servlet-class>com.cheeny.controller.UserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>user</servlet-name>
        <url-pattern>/user.do</url-pattern>
    </servlet-mapping>
</web-app>

返回上层目录


版权声明:本文为qq_43776742原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。