基于MVC的JavaWeb案例

52 篇文章 0 订阅

基于MVC的JavaWeb案例

三层架构的思想实在是太完美了,这里写了一个小模板案例,仅供大家参考学习。
必要的步骤都有注释声明,稍微细节一点的部分也都加上了注释,所以非常适合新手入门使用
希望可以帮到正在努力的你。
这里我展示一下我的目录
在这里插入图片描述
dao包下的接口

import domain.User;
import java.util.List;
//dao层接口
public interface UserDao {
    //    查找所有的信息
    public List<User> findAll();
    //    登陆验证
    public User loginUser(User user);
//    增加
    public void add(User user);
//    删除
    public void del(String id);
//    修改
    public void set(User user);
//    通过id检索对象
    public User findById(int id);
}

dao包接口实现类

import dao.UserDao;
import domain.User;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import util.JdbcUtils;
import java.util.List;
//dao层的实现类
public class UserDaoImpl implements UserDao {
//    基操
    private JdbcTemplate jdbcTemplate=new JdbcTemplate(JdbcUtils.getDataSource());
//    查找所有信息
    @Override
    public List<User> findAll() {
        String sql="select *from user";
        List<User> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
        return query;
    }
//    登陆验证
    @Override
    public User loginUser(User user) {
        try {
            String sql="select * from user where username=? and password=?";
            User user1 = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), user.getUsername(), user.getPassword());
            return user1;
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
        return null;
    }
//添加用户
    @Override
    public void add(User user) {
        try{
            String sql="insert into user values(null,?,?,?,?,?,?,?)";
            int update = jdbcTemplate.update(sql, null, null, user.getGender(), user.getAge(), user.getAddress(), user.getQq(), user.getEmail());
        }catch (Exception e){
            e.printStackTrace();
        }
    }
//删除用户
    @Override
    public void del(String id) {
        try {
            String sql="delete from user where id=?";
            jdbcTemplate.update(sql,Integer.parseInt(id));
        } catch (DataAccessException e) {
            e.printStackTrace();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
    }
//修改用户信息
    @Override
    public void set(User user) {
        try {
            String sql="update user set gender=?,age=?,address=?,qq=?,email=? where id=?";
            jdbcTemplate.update(sql,user.getGender(),user.getAge(),user.getAddress(),user.getQq(),user.getEmail(),user.getId());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
//通过id检索user对象
    @Override
    public User findById(int id) {
        try {
            String sql="select * from user where id=?";
            User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
            return user;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

service包下的接口

import domain.User;
import java.util.List;
//service层接口
public interface UserService {
    //    查询所有列表
    public List<User> findAll();
    //登录
    public User login(User user);
    //    增加
    public void add(User user);
    //    删除
    public void del(String id);
    //    更改
    public void set(User user);
//        通过id检索
    public User findById(String id);
}

service包接口实现类

import dao.UserDao;
import dao.impl.UserDaoImpl;
import domain.User;
import service.UserService;
import java.util.List;
//service层接口的实现类,用来操作dao层
public class UserServiceImpl implements UserService {
    //    设置私有dao层实现类
    private UserDao userDao = new UserDaoImpl();

//    查找所有信息
    @Override
    public List<User> findAll() {
//        调用dao层的方法,并将结果返回给servlet
        return userDao.findAll();
    }
//登录验证
    @Override
    public User login(User user) {
        return userDao.loginUser(user);
    }
//添加user
    @Override
    public void add(User user) {
        userDao.add(user);
    }
//删除user
    @Override
    public void del(String id) {
        userDao.del(id);
    }
//修改user
    @Override
    public void set(User user) {
        userDao.set(user);
    }
//通过id检索user
    @Override
    public User findById(String id) {
        return userDao.findById(Integer.parseInt(id));
    }
}

seb.servlet包下的AddServlet

import domain.User;
import org.apache.commons.beanutils.BeanUtils;
import service.UserService;
import service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
//添加操作servlet
@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
//        1.封装user
        User user=new User();
        Map<String, String[]> parameterMap = request.getParameterMap();
        try {
            BeanUtils.populate(user,parameterMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
//        2.对封装后的对象添加到数据库
        UserService userService=new UserServiceImpl();
        userService.add(user);
//        3.添加后,跳转到主页(登陆页面)        request.getRequestDispatcher("/UserServlet").forward(request,response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

seb.servlet包下的DelServlet

import service.UserService;
import service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/DelServlet")
public class DelServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
//        1.获取页面id信息
        UserService userService = new UserServiceImpl();
        String id = request.getParameter("id");
//        2.从数据库删除该id的所有信息
        userService.del(id);
//        3.跳转到主页
        request.getRequestDispatcher("/UserServlet").forward(request, response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

seb.servlet包下的LoginServlet

import com.mysql.cj.Session;
import dao.UserDao;
import dao.impl.UserDaoImpl;
import domain.User;
import org.apache.commons.beanutils.BeanUtils;
import service.UserService;
import service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;
//主页
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
//        1.封装user对象
        User user = new User();
        Map<String, String[]> parameterMap = request.getParameterMap();
        try {
            BeanUtils.populate(user, parameterMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
//        2.执行登录验证逻辑
        UserService userService = new UserServiceImpl();
        User login = userService.login(user);
        if (login != null) {
//            登陆成功直接跳转,不再进行账号密码数据的转存
            request.getRequestDispatcher("/UserServlet").forward(request, response);
        } else {
//            登陆失败,页面打印提示信息
            response.getWriter().write("err the pin");
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

seb.servlet包下的SelectAllServlet

import domain.User;
import org.apache.commons.beanutils.BeanUtils;
import service.UserService;
import service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/SelectAllServlet")
public class SelectAllServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
//        1.获取页面发送过来的id
        UserService userService = new UserServiceImpl();
        String id = request.getParameter("id");
//        2.检索该id的信息并返回给user对象
        User user = userService.findById(id);
//        3.将user发送给页面
        request.setAttribute("user",user);
//        4.跳转到修改页面
      request.getRequestDispatcher("/set.jsp").forward(request,response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

seb.servlet包下的SetServlet

import domain.User;
import org.apache.commons.beanutils.BeanUtils;
import service.UserService;
import service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
@WebServlet("/SetServlet")
public class SetServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
//        1.获取页面信息封装给user
        User user=new User();
        UserService userService=new UserServiceImpl();
        Map<String, String[]> parameterMap = request.getParameterMap();
        try {
            BeanUtils.populate(user,parameterMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
//        2.修改信息
        userService.set(user);
//        3.跳转到主页  
      request.getRequestDispatcher("/UserServlet").forward(request,response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

seb.servlet包下的UserServlet

import dao.UserDao;
import dao.impl.UserDaoImpl;
import domain.User;
import service.UserService;
import service.impl.UserServiceImpl;
import javax.jws.soap.SOAPBinding;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
//servlet层,主要是操作service层。并获取其返回的信息
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        UserService userService = new UserServiceImpl();
//      1.获取查询信息
        List<User> all = userService.findAll();
//      2.将获取到的信息进行发送
        request.setAttribute("user", all);
//      3.跳转到主页
        request.getRequestDispatcher("/show.jsp").forward(request, response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

添加页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>add</title>
</head>
<body>
<%--添加对象信息页面--%>
<form action="AddServlet" method="post">
    <table align="center" style="float: top" border="1">
        <tr>
            <th>
            male<input type="radio" name="sex">
            female<input type="radio" name="sex">
            </th>
        </tr>
        <tr>
            <th>
            age<input type="text"name="age" value="age">
            </th>
        </tr>
        <tr>
            <th>
            address<input type="text" name="address" value="address">
            </th>
        </tr>
        <tr>
            <th>
            qq<input type="text" name="qq" value="qq">
            </th>
        </tr>
        <tr>
            <th>
            email<input type="text" name="email" value="email">
            </th>
        </tr>
        <tr>
            <th>
            <input type="submit" name="submit">
            </th>
        </tr>
    </table>
| email --%>
</form>
</body>
</html>

主页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>index</title>
  </head>
  <body>
  <form action="LoginServlet" method="post">
    username<input type="text" name="username">
    password<input type="password" name="password">
    <input type="submit" name="submit">
  </form>
  </body>
</html>

修改页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>set</title>
</head>
<body>
<%--注意这里的细节:由于el的作用范围有限,我们不妨把通过el表达式获取到的id信息直接传给SetServlet--%>
<form action="SetServlet?id=${user.id}" method="post">
    <table align="center" style="float: top" border="1">
        <tr>
            <th>
                male<input type="radio" name="sex" value="${user.gender}">
                female<input type="radio" name="sex"value="${user.gender}">
            </th>
        </tr>
        <tr>
            <th>
                age<input type="text"name="age"  value="${user.age}">
            </th>
        </tr>
        <tr>
            <th>
                address<input type="text" name="address" value="${user.address}">
            </th>
        </tr>
        <tr>
            <th>
                qq<input type="text" name="qq" value="${user.qq}">
            </th>
        </tr>

        <tr>
            <th>
                email<input type="text" name="email" value="${user.email}">
            </th>
        </tr>
        <tr>
            <th>
                <input type="submit" name="submit">
            </th>
        </tr>
    </table>
</form>
</body>
</html>

信息展示页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>show</title>
</head>
<body>
<div>
    <div style="float: left">
        <form class="form-inline">
            <label for="exampleInputName1">姓名</label>
            <input type="text" class="form-control" id="exampleInputName1">
            <label for="exampleInputName2">籍贯</label>
            <input type="text" class="form-control" id="exampleInputName2">
            <label for="exampleInputEmail2">Email</label>
            <input type="email" class="form-control" id="exampleInputEmail2">
            <button type="submit" class="btn btn-default">查询</button>
        </form>
    </div>
    <div style="float:right;">
        <a href="add.jsp"><input type="button" name="add" value="添加联系人"></a>
        <input type="button" name="del" value="删除选中">
    </div>
    <br>
    <table align="center" border="1">
        <tr bgcolor="yellow">
            <th>
                选择
            </th>
            <th>
                编号
            </th>
            <th>
                账号
            </th>
            <th>
                密码
            </th>
            <th>
                性别
            </th>
            <th>
                年龄
            </th>
            <th>
                地址
            </th>
            <th>
                qq
            </th>
            <th>
                email
            </th>
            <th>操作</th>
        </tr>
        <c:forEach items="${user}" var="s" varStatus="a">
            <tr>
                <th>
                    <input type="checkbox">
                </th>
                <th>
                        ${a.count}
                </th>
                <th>
                        ${s.username}
                </th>
                <th>
                        ${s.password}
                </th>
                <th>
                        ${s.gender}
                </th>
                <th>
                        ${s.age}
                </th>
                <th>
                        ${s.address}
                </th>
                <th>
                        ${s.qq}
                </th>
                <th>
                        ${s.email}
                </th>
                <th>
<%--                    注意这里,同样将id传递过去,以通过该id索引相应的信息--%>
                    <a href="SelectAllServlet?id=${s.id}">
                        <input type="submit" name="id" value="set">
                    </a>
                    <a href="DelServlet?id=${s.id}">
                        <input type="submit" name="id" value="del">
                    </a>
                </th>
            </tr>
        </c:forEach>
    </table>
    <div style="">
        <nav aria-label="Page navigation">
            <ul class="pagination">
                <a href="#" aria-label="Previous">
                    <span aria-hidden="true">&laquo;</span>
                </a>
                <a href="#">1</a>
                <a href="#">2</a>
                <a href="#">3</a>
                <a href="#">4</a>
                <a href="#">5</a>
                <a href="#" aria-label="Next">
                    <span aria-hidden="true">&raquo;</span>
                </a>
            </ul>
        </nav>
    </div>
</div>
</body>
</html>
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君问归期魏有期

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值