一.整体架构:

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

二.具体代码:

1.User.java

package common;

public class User {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
} }

2.UserDao.java

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import common.User;
import helper.DbHelper; public class UserDao {
/**
* 查询所有用户信息
* @return
*/
public List<User> getAllUser(){
List<User> list = new ArrayList<User>();
Connection conn = DbHelper.getConnection();//连接数据库
String sql = "select * from user";
try {
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rst = pst.executeQuery();
while (rst.next()) {
User user = new User();
user.setId(rst.getInt("id"));
user.setName(rst.getString("name"));
user.setAge(rst.getInt("age"));
list.add(user);
}
rst.close();
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
} /**
* 添加用户
* @param user
* @return
*/
public boolean addUser(User user){
String sql = "INSERT INTO `user`(`name`,`age`) VALUES (?,?)";
Connection conn = DbHelper.getConnection();
try {
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, user.getName());
pst.setInt(2, user.getAge());
int count = pst.executeUpdate();
pst.close();
return count>0?true:false;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
} /**
* 修改用户信息
* @param user
* @return
*/
public boolean updateUser(User user){
String sql = "UPDATE `user` SET `name`=?,`age`=? WHERE `id` = ?";
Connection conn = DbHelper.getConnection();
try {
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, user.getName());
pst.setInt(2, user.getAge());
pst.setInt(3, user.getId());
int count = pst.executeUpdate();
pst.close();
return count>0?true:false;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
} /**
* 删除用户
* @param id
* @return
*/
public boolean deleteUser(int id){
String sql = "delete from user where id = ?";
Connection conn = DbHelper.getConnection();
try {
PreparedStatement pst = conn.prepareStatement(sql);
pst.setInt(1, id);
int count = pst.executeUpdate();
pst.close();
return count>0?true:false;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
} /**
* 根据ID进行查询用户
* @param id
* @return
*/
public User selectUserById(int id){
Connection conn = DbHelper.getConnection();
String sql = "select * from user where id = "+id;
User user = null;
try {
PreparedStatement pst = conn.prepareStatement(sql);
ResultSet rst = pst.executeQuery();
while (rst.next()) {
user = new User();
user.setId(rst.getInt("id"));
user.setName(rst.getString("name"));
user.setAge(rst.getInt("age"));
}
rst.close();
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
return user;
}
}

3.DbHelper

package helper;

import java.sql.Connection;
import java.sql.DriverManager; public class DbHelper {
private static String url = "jdbc:mysql://localhost:3306/my-db"; //数据库地址
private static String userName = "root"; //数据库用户名
private static String passWord = "Pa33w0rd"; //数据库密码
private static Connection conn = null; private DbHelper(){ } public static Connection getConnection(){
if(null == conn){
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
} public static void main(String[] args) { //测试数据库是否连通
System.out.println(getConnection());
}
}

4.Servlet

package servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import common.User;
import dao.UserDao; public class AddServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException { this.doPost(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String name = req.getParameter("name");
Integer age = Integer.valueOf(req.getParameter("age"));
User user = new User();//创建user对象
user.setName(name);
user.setAge(age);
UserDao dao = new UserDao();
dao.addUser(user);//添加到数据库中
req.getRequestDispatcher("list").forward(req, resp);
} // @Override
// protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// String name = req.getParameter("name");
// Integer age = Integer.valueOf(req.getParameter("age"));
// System.out.println("name:"+name+" 111111111 age:"+age);
// User user = new User();//创建user对象
// user.setName(name);
// user.setAge(age);
// UserDao dao = new UserDao();
// dao.addUser(user);//添加到数据库中
// req.getRequestDispatcher("list").forward(req, resp);
// }
}
package servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import dao.UserDao; public class DeleteServlet extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
} protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String idStr = req.getParameter("id"); // 删除数据的ID,根据ID删除
if (idStr != null && !idStr.equals("")) {
int id = Integer.valueOf(idStr);
UserDao dao = new UserDao();
dao.deleteUser(id);
}
req.getRequestDispatcher("list").forward(req, resp);
}
}
package servlet;

import java.io.IOException;
import java.util.List; 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 common.User;
import dao.UserDao; @WebServlet("/list")
public class ListServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
UserDao dao = new UserDao();
List<User> list = dao.getAllUser();
System.out.println("dao:"+dao+" 111111111 list:"+list);
req.setAttribute("userInfoList", list);
req.getRequestDispatcher("list.jsp").forward(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
} }
package servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import common.User;
import dao.UserDao; public class UpdateServlet extends HttpServlet {
/**
* 查询到选中ID的值所对应的数据
*/
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String idStr = req.getParameter("id");
if (idStr != null && !idStr.equals("")) {
int id = Integer.valueOf(idStr);
UserDao dao = new UserDao();
User user = dao.selectUserById(id);
req.setAttribute("user", user);
}
req.getRequestDispatcher("update.jsp").forward(req, resp);
} /**
* 根据此ID对数据的值进行修改
*/
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String idStr = req.getParameter("id");
if (idStr != null && !idStr.equals("")) {
int id = Integer.valueOf(idStr);
String name = req.getParameter("name");
Integer age = Integer.valueOf(req.getParameter("age"));
User user = new User();
user.setId(id);
user.setName(name);
user.setAge(age);
UserDao dao = new UserDao();
dao.updateUser(user);
}
req.getRequestDispatcher("list").forward(req, resp);
}
}

5.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">
<display-name>MyServlet</display-name>
<!-- <servlet>
servlet的注册名称,自定义。每个servlet的name不一样
<servlet-name>listServ</servlet-name>
servlet的完整类名: 包名+类名;如果ctrl+鼠标左击能 点开,说明成功
<servlet-class>servlet.ListServlet</servlet-class>
</servlet> -->
<!-- servlet的映射配置 -->
<!-- <servlet-mapping>
servlet的注册名称,一定要和上面的内部名称保持一致!!
<servlet-name>listServ</servlet-name>
servlet的对外访问路径(访问servlet的名称)
<url-pattern>/list</url-pattern>
</servlet-mapping>
ps:同一个servlet可以配置多个servlet-mapping,举个栗子
<servlet-mapping>
还是上面的那个servlet
<servlet-name>listServ</servlet-name>
除了/ListServlet,又配置了一个list2,通过这两个路径都可访问listServ这个servlet
<url-pattern>/list2</url-pattern>
</servlet-mapping> --> <servlet>
<servlet-name>addServ</servlet-name>
<servlet-class>servlet.AddServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addServ</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>updateServ</servlet-name>
<servlet-class>servlet.UpdateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>updateServ</servlet-name>
<url-pattern>/update</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>delServ</servlet-name>
<servlet-class>servlet.DeleteServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>delServ</servlet-name>
<url-pattern>/delete</url-pattern>
</servlet-mapping>
</web-app>

6.前端代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新增用户</title>
<script type="text/javascript">
function check(form) {
with (form) {
if (name.value == "") {
alert("用户名不能为空");
return false;
}
}
}
</script>
</head>
<body>
<form action="add" method="post" onsubmit="check(this)">
<table align="center" width="450">
<tr>
<td align="center" colspan="2">
<h2>添加用户信息</h2>
<hr>
</td>
</tr>
<tr>
<td align="right">用户名:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td align="right">年龄:</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="添 加">
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.List"%>
<%@page import="common.User"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>所有用户</title>
<style type="text/css">
td {
font-size: 12px;
}
h2 {
margin: 0px
}
</style>
<script type="text/javascript"> </script>
</head>
<body>
<h2 align="center">
<a href="add.jsp">添加新用户</a>
</h2>
<br>
<table align="center" width="450" border="1" height="180"
bordercolor="white" bgcolor="black" cellpadding="1" cellspacing="1">
<tr bgcolor="white">
<td align="center" colspan="7">
<h2>所有用户信息</h2>
</td>
</tr>
<tr align="center" bgcolor="#e1ffc1">
<td><b>ID</b></td>
<td><b>姓名</b></td>
<td><b>年龄</b></td>
<td colspan="2"><b>操作</b></td>
</tr>
<%
// 获取用户信息集合
List<User> list = (List<User>)(request.getAttribute("userInfoList"));
// 判断是否有数据
if (list == null || list.size() < 1) {
%>
<tr bgcolor="white"><td colspan="5" ><h4 align="center">没有数据</h4></td></tr>
<%
} else {
// 遍历用户集合中的数据
for (User user : list) {
%>
<tr align="center" bgcolor="white">
<td><%=user.getId()%></td>
<td><%=user.getName()%></td>
<td><%=user.getAge()%></td>
<td >
<a href="update?id=<%=user.getId()%>">修改</a> </td>
<td>
<a href="delete?id=<%=user.getId()%>">删除</a>
</td>
</tr>
<%
}
}
%>
</table>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="common.User"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改用户信息页面</title>
</head>
<body>
<div>
<table>
<thead><tr><td><h1>修改用户信息</h1></td></tr></thead>
<tbody>
<form action="update" method="post">
<tr>
<td>ID:</td>
<td><input type="text" name="id" value="${user.id}"
readonly="readonly" /></td>
</tr>
<tr>
<td>name:</td>
<td><input type="text" name="name" value="${user.name}" /></td>
</tr>
<tr>
<td>age:</td>
<td><input type="text" name="age" value="${user.age}" /></td>
</tr>
<tr>
<td><input class="btn" type="submit" value="提交" /> <input
class="btn" type="reset" value="重置" /></td>
</tr>
</tbody>
</form>
</table>
</div>
</body>
</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. [USACO]骑马修栅栏 Riding the Fences

    题目链接 题目简述:欧拉回路,字典序最小.没什么好说的. 解题思路:插入边的时候,使用multiset来保证遍历出出答案的字典序最小. 算法模板:for(枚举边) 删边(无向图删两次) 遍历到那个点 ...

  2. c++ 珊格画椭圆

    #ifndef _TEST_H #define _TEST_H #include <iostream> #include <math.h> using namespace st ...

  3. [bzoj 3566][SHOI 2014]概率充电器

    传送门 Description SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定. 随后电能可以 ...

  4. 如何判断Linux下 网卡是虚拟还是物理网卡?

    ifconfig命令可以查看Linux系统中正在使用的网卡,包括物理网卡和虚拟网卡,如果想要查看Linux系统中全部的网卡,可以查看/proc/net/dev文件,那如何区分网卡是虚拟还是物理的呢? ...

  5. codeforces319C

    C. Kalila and Dimna in the Logging Industry time limit per test 2 seconds memory limit per test 256 ...

  6. java关于Integer设置-128到127的静态缓存

    今天在一个java群里,看到有个群友问到如下为什么第一个为true,第二个为false. System.out.println(Integer.valueOf("50")==Int ...

  7. java四种对象引用类型

    java四种对象引用类型 对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序 ...

  8. idea出现Error configuring application listener of class org.springframework.web.context.ContextLoader

    在IDEA中写spring mvc时出现Error configuring application listener of class org.springframework.web.context. ...

  9. CentOS 6.5系统中mysql数据库还原后出现无法读表

    图形化工具还原提示如下: 命令行输入 mysql> use netmanage;  Database changed  mysql> show tables;  ERROR 1018 (H ...

  10. Oracle虚拟机 与 windows配置

    目录 相关资料 安装虚拟机及相关配置 安装PLSQL Developer Navicat Premium登录数据库 踩坑之路 相关资料 oracle虚拟机配置 提取码:s3sg 安装虚拟机及相关配置 ...