一.整体架构:

注:取自其他文章,最后的NewFile.html纯用于测试错误,完全不用。

二.具体代码:

1.User.java

  1. package common;
  2.  
  3. public class User {
  4. private Integer id;
  5. private String name;
  6. private Integer age;
  7. public Integer getId() {
  8. return id;
  9. }
  10. public void setId(Integer id) {
  11. this.id = id;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public Integer getAge() {
  20. return age;
  21. }
  22. public void setAge(Integer age) {
  23. this.age = age;
  24. }
  25.  
  26. }

2.UserDao.java

  1. package dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import common.User;
  11. import helper.DbHelper;
  12.  
  13. public class UserDao {
  14. /**
  15. * 查询所有用户信息
  16. * @return
  17. */
  18. public List<User> getAllUser(){
  19. List<User> list = new ArrayList<User>();
  20. Connection conn = DbHelper.getConnection();//连接数据库
  21. String sql = "select * from user";
  22. try {
  23. PreparedStatement pst = conn.prepareStatement(sql);
  24. ResultSet rst = pst.executeQuery();
  25. while (rst.next()) {
  26. User user = new User();
  27. user.setId(rst.getInt("id"));
  28. user.setName(rst.getString("name"));
  29. user.setAge(rst.getInt("age"));
  30. list.add(user);
  31. }
  32. rst.close();
  33. pst.close();
  34. } catch (SQLException e) {
  35. e.printStackTrace();
  36. }
  37. return list;
  38. }
  39.  
  40. /**
  41. * 添加用户
  42. * @param user
  43. * @return
  44. */
  45. public boolean addUser(User user){
  46. String sql = "INSERT INTO `user`(`name`,`age`) VALUES (?,?)";
  47. Connection conn = DbHelper.getConnection();
  48. try {
  49. PreparedStatement pst = conn.prepareStatement(sql);
  50. pst.setString(1, user.getName());
  51. pst.setInt(2, user.getAge());
  52. int count = pst.executeUpdate();
  53. pst.close();
  54. return count>0?true:false;
  55. } catch (SQLException e) {
  56. e.printStackTrace();
  57. }
  58. return false;
  59. }
  60.  
  61. /**
  62. * 修改用户信息
  63. * @param user
  64. * @return
  65. */
  66. public boolean updateUser(User user){
  67. String sql = "UPDATE `user` SET `name`=?,`age`=? WHERE `id` = ?";
  68. Connection conn = DbHelper.getConnection();
  69. try {
  70. PreparedStatement pst = conn.prepareStatement(sql);
  71. pst.setString(1, user.getName());
  72. pst.setInt(2, user.getAge());
  73. pst.setInt(3, user.getId());
  74. int count = pst.executeUpdate();
  75. pst.close();
  76. return count>0?true:false;
  77. } catch (SQLException e) {
  78. e.printStackTrace();
  79. }
  80. return false;
  81. }
  82.  
  83. /**
  84. * 删除用户
  85. * @param id
  86. * @return
  87. */
  88. public boolean deleteUser(int id){
  89. String sql = "delete from user where id = ?";
  90. Connection conn = DbHelper.getConnection();
  91. try {
  92. PreparedStatement pst = conn.prepareStatement(sql);
  93. pst.setInt(1, id);
  94. int count = pst.executeUpdate();
  95. pst.close();
  96. return count>0?true:false;
  97. } catch (SQLException e) {
  98. e.printStackTrace();
  99. }
  100. return false;
  101. }
  102.  
  103. /**
  104. * 根据ID进行查询用户
  105. * @param id
  106. * @return
  107. */
  108. public User selectUserById(int id){
  109. Connection conn = DbHelper.getConnection();
  110. String sql = "select * from user where id = "+id;
  111. User user = null;
  112. try {
  113. PreparedStatement pst = conn.prepareStatement(sql);
  114. ResultSet rst = pst.executeQuery();
  115. while (rst.next()) {
  116. user = new User();
  117. user.setId(rst.getInt("id"));
  118. user.setName(rst.getString("name"));
  119. user.setAge(rst.getInt("age"));
  120. }
  121. rst.close();
  122. pst.close();
  123. } catch (SQLException e) {
  124. e.printStackTrace();
  125. }
  126. return user;
  127. }
  128. }

3.DbHelper

  1. package helper;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5.  
  6. public class DbHelper {
  7. private static String url = "jdbc:mysql://localhost:3306/my-db"; //数据库地址
  8. private static String userName = "root"; //数据库用户名
  9. private static String passWord = "Pa33w0rd"; //数据库密码
  10. private static Connection conn = null;
  11.  
  12. private DbHelper(){
  13.  
  14. }
  15.  
  16. public static Connection getConnection(){
  17. if(null == conn){
  18. try {
  19. Class.forName("com.mysql.jdbc.Driver");
  20. conn = DriverManager.getConnection(url, userName, passWord);
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. }
  25. return conn;
  26. }
  27.  
  28. public static void main(String[] args) { //测试数据库是否连通
  29. System.out.println(getConnection());
  30. }
  31. }

4.Servlet

  1. package servlet;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import common.User;
  11. import dao.UserDao;
  12.  
  13. public class AddServlet extends HttpServlet {
  14.  
  15. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
  16. ServletException, IOException { this.doPost(req, resp); }
  17.  
  18. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  19. throws ServletException, IOException {
  20. String name = req.getParameter("name");
  21. Integer age = Integer.valueOf(req.getParameter("age"));
  22. User user = new User();//创建user对象
  23. user.setName(name);
  24. user.setAge(age);
  25. UserDao dao = new UserDao();
  26. dao.addUser(user);//添加到数据库中
  27. req.getRequestDispatcher("list").forward(req, resp);
  28. }
  29.  
  30. // @Override
  31. // protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  32. // String name = req.getParameter("name");
  33. // Integer age = Integer.valueOf(req.getParameter("age"));
  34. // System.out.println("name:"+name+" 111111111 age:"+age);
  35. // User user = new User();//创建user对象
  36. // user.setName(name);
  37. // user.setAge(age);
  38. // UserDao dao = new UserDao();
  39. // dao.addUser(user);//添加到数据库中
  40. // req.getRequestDispatcher("list").forward(req, resp);
  41. // }
  42. }
  1. package servlet;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import dao.UserDao;
  11.  
  12. public class DeleteServlet extends HttpServlet{
  13. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  14. this.doPost(req, resp);
  15. }
  16.  
  17. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  18. String idStr = req.getParameter("id"); // 删除数据的ID,根据ID删除
  19. if (idStr != null && !idStr.equals("")) {
  20. int id = Integer.valueOf(idStr);
  21. UserDao dao = new UserDao();
  22. dao.deleteUser(id);
  23. }
  24. req.getRequestDispatcher("list").forward(req, resp);
  25. }
  26. }
  1. package servlet;
  2.  
  3. import java.io.IOException;
  4. import java.util.List;
  5.  
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. import common.User;
  13. import dao.UserDao;
  14.  
  15. @WebServlet("/list")
  16. public class ListServlet extends HttpServlet {
  17.  
  18. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  19. UserDao dao = new UserDao();
  20. List<User> list = dao.getAllUser();
  21. System.out.println("dao:"+dao+" 111111111 list:"+list);
  22. req.setAttribute("userInfoList", list);
  23. req.getRequestDispatcher("list.jsp").forward(req, resp);
  24.  
  25. }
  26.  
  27. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  28. this.doGet(req, resp);
  29. }
  30.  
  31. }
  1. package servlet;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import common.User;
  11. import dao.UserDao;
  12.  
  13. public class UpdateServlet extends HttpServlet {
  14. /**
  15. * 查询到选中ID的值所对应的数据
  16. */
  17. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  18. String idStr = req.getParameter("id");
  19. if (idStr != null && !idStr.equals("")) {
  20. int id = Integer.valueOf(idStr);
  21. UserDao dao = new UserDao();
  22. User user = dao.selectUserById(id);
  23. req.setAttribute("user", user);
  24. }
  25. req.getRequestDispatcher("update.jsp").forward(req, resp);
  26. }
  27.  
  28. /**
  29. * 根据此ID对数据的值进行修改
  30. */
  31. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  32. String idStr = req.getParameter("id");
  33. if (idStr != null && !idStr.equals("")) {
  34. int id = Integer.valueOf(idStr);
  35. String name = req.getParameter("name");
  36. Integer age = Integer.valueOf(req.getParameter("age"));
  37. User user = new User();
  38. user.setId(id);
  39. user.setName(name);
  40. user.setAge(age);
  41. UserDao dao = new UserDao();
  42. dao.updateUser(user);
  43. }
  44. req.getRequestDispatcher("list").forward(req, resp);
  45. }
  46. }

5.web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  3. <display-name>MyServlet</display-name>
  4. <!-- <servlet>
  5. servlet的注册名称,自定义。每个servlet的name不一样
  6. <servlet-name>listServ</servlet-name>
  7. servlet的完整类名: 包名+类名;如果ctrl+鼠标左击能 点开,说明成功
  8. <servlet-class>servlet.ListServlet</servlet-class>
  9. </servlet> -->
  10. <!-- servlet的映射配置 -->
  11. <!-- <servlet-mapping>
  12. servlet的注册名称,一定要和上面的内部名称保持一致!!
  13. <servlet-name>listServ</servlet-name>
  14. servlet的对外访问路径(访问servlet的名称)
  15. <url-pattern>/list</url-pattern>
  16. </servlet-mapping>
  17. ps:同一个servlet可以配置多个servlet-mapping,举个栗子
  18. <servlet-mapping>
  19. 还是上面的那个servlet
  20. <servlet-name>listServ</servlet-name>
  21. 除了/ListServlet,又配置了一个list2,通过这两个路径都可访问listServ这个servlet
  22. <url-pattern>/list2</url-pattern>
  23. </servlet-mapping> -->
  24.  
  25. <servlet>
  26. <servlet-name>addServ</servlet-name>
  27. <servlet-class>servlet.AddServlet</servlet-class>
  28. </servlet>
  29. <servlet-mapping>
  30. <servlet-name>addServ</servlet-name>
  31. <url-pattern>/add</url-pattern>
  32. </servlet-mapping>
  33.  
  34. <servlet>
  35. <servlet-name>updateServ</servlet-name>
  36. <servlet-class>servlet.UpdateServlet</servlet-class>
  37. </servlet>
  38. <servlet-mapping>
  39. <servlet-name>updateServ</servlet-name>
  40. <url-pattern>/update</url-pattern>
  41. </servlet-mapping>
  42.  
  43. <servlet>
  44. <servlet-name>delServ</servlet-name>
  45. <servlet-class>servlet.DeleteServlet</servlet-class>
  46. </servlet>
  47. <servlet-mapping>
  48. <servlet-name>delServ</servlet-name>
  49. <url-pattern>/delete</url-pattern>
  50. </servlet-mapping>
  51. </web-app>

6.前端代码

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title>新增用户</title>
  7. <script type="text/javascript">
  8. function check(form) {
  9. with (form) {
  10. if (name.value == "") {
  11. alert("用户名不能为空");
  12. return false;
  13. }
  14. }
  15. }
  16. </script>
  17. </head>
  18. <body>
  19. <form action="add" method="post" onsubmit="check(this)">
  20. <table align="center" width="450">
  21. <tr>
  22. <td align="center" colspan="2">
  23. <h2>添加用户信息</h2>
  24. <hr>
  25. </td>
  26. </tr>
  27. <tr>
  28. <td align="right">用户名:</td>
  29. <td><input type="text" name="name"></td>
  30. </tr>
  31. <tr>
  32. <td align="right">年龄:</td>
  33. <td><input type="text" name="age"></td>
  34. </tr>
  35. <tr>
  36. <td align="center" colspan="2">
  37. <input type="submit" value="添 加">
  38. </td>
  39. </tr>
  40. </table>
  41. </form>
  42. </body>
  43. </html>
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <%@page import="java.util.List"%>
  4. <%@page import="common.User"%>
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  8. <title>所有用户</title>
  9. <style type="text/css">
  10. td {
  11. font-size: 12px;
  12. }
  13. h2 {
  14. margin: 0px
  15. }
  16. </style>
  17. <script type="text/javascript">
  18.  
  19. </script>
  20. </head>
  21. <body>
  22. <h2 align="center">
  23. <a href="add.jsp">添加新用户</a>
  24. </h2>
  25. <br>
  26. <table align="center" width="450" border="1" height="180"
  27. bordercolor="white" bgcolor="black" cellpadding="1" cellspacing="1">
  28. <tr bgcolor="white">
  29. <td align="center" colspan="7">
  30. <h2>所有用户信息</h2>
  31. </td>
  32. </tr>
  33. <tr align="center" bgcolor="#e1ffc1">
  34. <td><b>ID</b></td>
  35. <td><b>姓名</b></td>
  36. <td><b>年龄</b></td>
  37. <td colspan="2"><b>操作</b></td>
  38. </tr>
  39. <%
  40. // 获取用户信息集合
  41. List<User> list = (List<User>)(request.getAttribute("userInfoList"));
  42. // 判断是否有数据
  43. if (list == null || list.size() < 1) {
  44. %>
  45. <tr bgcolor="white"><td colspan="5" ><h4 align="center">没有数据</h4></td></tr>
  46. <%
  47. } else {
  48. // 遍历用户集合中的数据
  49. for (User user : list) {
  50. %>
  51. <tr align="center" bgcolor="white">
  52. <td><%=user.getId()%></td>
  53. <td><%=user.getName()%></td>
  54. <td><%=user.getAge()%></td>
  55. <td >
  56. <a href="update?id=<%=user.getId()%>">修改</a>
  57.  
  58. </td>
  59. <td>
  60. <a href="delete?id=<%=user.getId()%>">删除</a>
  61. </td>
  62. </tr>
  63. <%
  64. }
  65. }
  66. %>
  67. </table>
  68. </body>
  69. </html>
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@page import="common.User"%>
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>修改用户信息页面</title>
  8. </head>
  9. <body>
  10. <div>
  11. <table>
  12. <thead><tr><td><h1>修改用户信息</h1></td></tr></thead>
  13. <tbody>
  14. <form action="update" method="post">
  15. <tr>
  16. <td>ID:</td>
  17. <td><input type="text" name="id" value="${user.id}"
  18. readonly="readonly" /></td>
  19. </tr>
  20. <tr>
  21. <td>name:</td>
  22. <td><input type="text" name="name" value="${user.name}" /></td>
  23. </tr>
  24. <tr>
  25. <td>age:</td>
  26. <td><input type="text" name="age" value="${user.age}" /></td>
  27. </tr>
  28. <tr>
  29. <td><input class="btn" type="submit" value="提交" /> <input
  30. class="btn" type="reset" value="重置" /></td>
  31. </tr>
  32. </tbody>
  33. </form>
  34. </table>
  35. </div>
  36. </body>
  37. </html>

三.jar包:mysql-connector-java-5.1.43-bin.jar(用于数据库连接)

 

(一)MVC项目的更多相关文章

  1. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...

  2. MVC项目中ExecutionTimeout不生效的解决方案

    我们做web服务器端开发时,经常会遇到一个需求场景,因为某些耗时处理造成页面的响应处理时间超长,技术角度就想能否给页面处理程序一个指定的超时时间,服务端处理程序执行时间超过这个指定的超时时间则中断处理 ...

  3. ASP.NET MVC项目实践技巧

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com 在.NET开发初期,微软提供的WEB开发模型是WebForm,试图消除Web和桌面的隔阂,建立一致的开发体验.但是 ...

  4. AngularJS2 + ASP.NET MVC项目

    环境:VS2015, NodeJS:v 6.5, npm: v3.10, AngularJs 2 通过将ASP.NET MVC项目与Angualr 2官网上的quick start整合的过程中遇到些问 ...

  5. IntelliJ IDEA上创建maven Spring MVC项目

    IntelliJ IDEA上创建Maven Spring MVC项目 各软件版本 利用maven骨架建立一个webapp 建立相应的目录 配置Maven和SpringMVC 配置Maven的pom.x ...

  6. 远程调试 ASP.NET MVC 项目

    Visual Studio 支持从一台计算机到另一台设备的远程调试.进行远程调试时,主机可以是任何支持 Visual Studio 的平台.远程设备可以是 x86.x64 或 ARM 平台. 本文将指 ...

  7. Visual Studio 2015 新建MVC项目 Package Manager Console不能使用 (HRESULT: 0x80131500)

    Visual studio 2015 突然新建不了MVC项目,报出错误: HRESULT: 0x80131500 在折腾了很长时间,最后在Github上看到这样一个贴 地址:https://githu ...

  8. mvc项目controller重命名了,用原网页url访问不了了,怎么办?

    如题.MVC项目,手机网站. 公司的官方微信上,用户关注之后,点击相应菜单就可以使用相关的功能. 最近项目重构,有些不规范的命名方式给予了重构.上线后,微信上发现一些网页访问不了了. 联系微信的维护人 ...

  9. 本地MVC项目发布到IIS服务器

    0瞎扯 朋友们有时候我们写个一个web程序只能使用卡西尼服务器调试,下面我教大家发布到IIS服务器上(包括本地ISS7.5和远程服务器 IIS) 1.VS发布 a.点击web项目->发布

  10. 基于MVC4+EasyUI的Web开发框架经验总结(15)--在MVC项目中使用RDLC报表

    RDLC是一个不错的报表,有着比较不错的设计模式和展现效果,在我的Winform开发里面,使用RDLC也是一个比较方便操作,如可以参考文章<DevExpress的XtraReport和微软RDL ...

随机推荐

  1. 使用注解方式实现 AOP和IoC

    使用注解方式实现AOP和IoC IOC和DI的注解 IOC: @Component:实现Bean组件的定义 @Repository:用于标注DAO类,功能与@Component作用相当 @Servic ...

  2. Airtest真机链接(一)

    确认ADB是否能够正常连接到手机 windows系统下: 用USB线连好手机后,进入AirtestIDE文件夹,在 AirtestIDE_2019-05-09_py3_win64/airtest/co ...

  3. luogu 3200 [HNOI2009]有趣的数列 卡特兰数+质因数分解

    打个表发现我们要求的就是卡特兰数的第 n 项,即 $\frac{C_{2n}^{n}}{n+1}$. 对组合数的阶乘展开,然后暴力分解质因子并开桶统计一下即可. code: #include < ...

  4. 解决chrome浏览器自动填充密码

    chrome会自动填充密码,解决方法很简单 使用下面的参考代码即可: <input type="password" readonly οnfοcus="this.r ...

  5. 【原创】go语言学习(十八)反射详解

    目录 变量介绍 反射介绍 结构体反射 反射总结以及应用场景 变量介绍 1.变量的内在机制 A. 类型信息,这部分是元信息,是预先定义好的B. 值类型,这部分是程序运行过程中,动态改变的 var arr ...

  6. webpack4温习总结

    webpack是一个模块打包器,可以根据入口文件,随着依赖关系将所有文件打包成js文件. 首先需要node环境,百度一下自己安装 webpack官网地址:https://www.webpackjs.c ...

  7. SpringMVC 捕获参数绑定失败时的异常

    SpringMVC配置数据验证(JSR-303)中提到了用String类型的域来绑定Ajax中的非法类型的参数. 这样做的目的是一旦发生一种情况,后端可以返回一个自定类的返回值,而不是返回Spring ...

  8. [bzoj 4872][六省联考2017]分手是祝愿

    传送门 Description N个灯按照1~N标号,按下一个开关i,所有标号是i的约数的开关都改变状态,目标是关掉所有的灯,如果当前最优策略≤k就直接按照最优策略走.否则随机按下一个开关.给出每个灯 ...

  9. hive --metastore三种模式

    在官网上对于这几种模式的介绍如下: 按Metastore数据库位置分: 1.本地/嵌入式Metastore数据库(Derby) 2.远程Metastore数据库(其他的关系型数据库,像mysql.or ...

  10. [转载]workbench分网---mapped face meshing面映射网格划分

    原文地址:face meshing面映射网格划分">workbench分网---mapped face meshing面映射网格划分作者:一丝尘埃 face meshing面映射网格划 ...