Servlet的增删改查
1:先写好index.jsp里面的HTML页面代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
form {
text-align: center;
}
h1 {
text-align: center;
}
td {
text-align: center;
height: 40px;
}
.left {
width: 50px;
}
.right {
width: 200px;
text-align: left;
}
.submit {
width: 100px;
height: 30px;
}
table {
margin: 0 auto;
}
</style>
</head>
<body>
<h1>注册:</h1>
<form action="insert" method="post">
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td class="left">姓名:</td>
<td class="right"><input type="text" name="name" />
</td>
</tr>
<tr>
<td>年龄:</td>
<td class="right"><input type="number" name="age" />
</td>
</tr>
<tr>
<td colspan="2"><input class="submit" type="submit" value="注册" />
</td>
</tr>
</table>
</form>
<h1>修改:</h1>
<form action="update" method="post">
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td class="left">姓名:</td>
<td class="right"><input type="text" name="name" />
</td>
</tr>
<tr>
<td>年龄:</td>
<td class="right"><input type="number" name="age" />
</td>
</tr>
<tr>
<td>需要修改的id:</td>
<td class="right"><input type="number" name="id" />
</td>
</tr>
<tr>
<td colspan="2"><input class="submit" type="submit" value="修改" />
</td>
</tr>
</table>
</form>
<h1>删除:</h1>
<form action="delete" method="post">
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td class="left">id:</td>
<td class="right"><input type="number" name="id" />
</td>
</tr>
<tr>
<td colspan="2"><input class="submit" type="submit" value="删除" />
</td>
</tr>
</table>
</form>
<h1>登录:</h1>
<form action="select" method="post">
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td class="left">账号:</td>
<td class="right"><input type="text" name="user" />
</td>
</tr>
<tr>
<td class="left">密码:</td>
<td class="right"><input type="password" name="pwd" />
</td>
</tr>
<tr>
<td colspan="2"><input class="submit" type="submit" value="登录" />
</td>
</tr>
</form>
</body>
</html>
</body>
</html>
##:2:创建模型层存储学生信息、DBUtil工具类,然后创建四个Servlet程序,Servlet程序都继承自HttpServlet,都写上doGet()方法和doPost()方法。
Servlet创建方法:
右击包名 点击new servlet
输入名字后只勾选这两个方法
点击next之后,这里只改图中的两个地方,也可以不改,改Mapping URL的时候前面必须要留一个"/",然后点击finish就创建完毕了
之后配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>insert</servlet-name>
<servlet-class>org.yangxin.service.InsertServelt</servlet-class>
</servlet>
<servlet>
<servlet-name>update</servlet-name>
<servlet-class>org.yangxin.service.UpdateServelt</servlet-class>
</servlet>
<servlet>
<servlet-name>select</servlet-name>
<servlet-class>org.yangxin.service.SelectServelt</servlet-class>
</servlet>
<servlet>
<servlet-name>delete</servlet-name>
<servlet-class>org.yangxin.service.DeleteServelt</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>insert</servlet-name>
<url-pattern>/insert</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>update</servlet-name>
<url-pattern>/update</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>select</servlet-name>
<url-pattern>/select</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>delete</servlet-name>
<url-pattern>/delete</url-pattern>
</servlet-mapping>
</web-app>
3:创建Servlet里的doGet()方法和doPost()方法之后程序可能会报错:
这个只用右键点击JRE System Library,然后Build Path–>Configure Build Path…
点击Libraries之后双击JRE System Library
点击Execution之后切换为JavaSE-1.6
点击Finish之后程序就不会报错了
4:Student里面存储学生信息模型,代码:
package org.yangxin.model;
public class Student {
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;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Student(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "id:" + id + " 姓名:" + name + " 年龄=" + age;
}
}
5:DBUtil工具类:
package org.yangxin.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBUtil {
public static Connection getConn() {
Connection conn = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;databaseName=MyDB", "sa",
"1");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
if (conn != null)
conn.close();
if (ps != null)
ps.close();
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
6:InsertServlet增加页面Java代码:
package org.yangxin.service;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.yangxin.test.SelectTest;
import org.yangxin.util.DBUtil;
public class InsertServelt extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
System.out.println("post...");
boolean isTrue = false;
// 获取输入的姓名
String name = req.getParameter("name");
// 获取输入的年龄
String ageStr = req.getParameter("age");
int age = 0;
if (ageStr == null || ageStr.equals("")) {
age = 0;
} else {
age = Integer.parseInt(ageStr);
}
try {
Connection conn = DBUtil.getConn();
// 插入前查询
SelectTest.main(null);
// 准备一个sql语句
String sql = "INSERT INTO student VALUES(?,?)";
// 用PreparedStatement交互数据库
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, age);
// 用count显示影响的行数
int count = ps.executeUpdate();
// 展示页面
if (count > 0) {
isTrue = true;
} else {
isTrue = false;
}
// 插入后查询
SelectTest.main(null);
// 关闭资源
DBUtil.close(conn, ps, null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
if (isTrue) {
out.println("<h1>注册成功</h1>");
out.println("<h1>"+"你注册的姓名为:"+name+"</h1>");
out.println("<h1>"+"你注册的年龄为:"+age+"</h1>");
} else {
out.println("<h1>注册失败!!!</h1>");
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
7:DeleteServlet删除页面Java代码:
package org.yangxin.service;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.yangxin.test.SelectTest;
import org.yangxin.util.DBUtil;
public class DeleteServelt extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
// 获取id
String idStr = req.getParameter("id");
int id = 0;
if (idStr == null || idStr.equals("")) {
id = 0;
} else {
id = Integer.parseInt(idStr);
}
boolean isTrue = false;
try {
// 架包 加载驱动
Connection conn = DBUtil.getConn();
// 删除前查询
System.out.println("你选择了删除,删除前学生信息:");
SelectTest.main(null);
// 准备一个sql语句
String sql = "DELETE student WHERE id=?";
// 用PreparedStatement交互数据库
PreparedStatement ps = conn.prepareStatement(sql);
System.out.println("删除数据:");
System.out.print("id:");
ps.setInt(1, id);
// 用count显示影响的行数
int count = ps.executeUpdate();
// 展示页面
if (count > 0) {
isTrue = true;
} else {
isTrue = false;
}
// 删除后查询
System.out.println("删除后学生信息:");
SelectTest.main(null);
// 关闭资源
DBUtil.close(conn, ps, null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
if(isTrue){
out.println("<h1>删除成功!!!</h1>");
}else{
out.println("<h1>删除失败!!!</h1>");
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
8:UpdateServlet修改页面Java代码:
package org.yangxin.service;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.yangxin.test.SelectTest;
import org.yangxin.util.DBUtil;
public class UpdateServelt extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
boolean isTrue = false;
// 获取输入的姓名
String name = req.getParameter("name");
// 获取输入的年龄
String ageStr = req.getParameter("age");
int age = 0;
if (ageStr == null || ageStr.equals("")) {
age = 0;
} else {
age = Integer.parseInt(ageStr);
}
// 获取输入的id
String idStr = req.getParameter("id");
int id = 0;
if (idStr == null || idStr.equals("")) {
id = 0;
} else {
id = Integer.parseInt(idStr);
}
try {
// 架包 加载驱动
Connection conn = DBUtil.getConn();
// 改动前查询
System.out.println("你选择了修改,修改前学生信息:");
SelectTest.main(null);
// 准备一个sql语句
String sql = "UPDATE student SET name=?,age=? WHERE id=?";
// 用PreparedStatement交互数据库
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, age);
ps.setInt(3, id);
// 用count显示影响的行数
int count = ps.executeUpdate();
// 展示页面
if (count > 0) {
isTrue = true;
} else {
isTrue = false;
}
// 改动后查询
System.out.println("修改后学生信息:");
SelectTest.main(null);
// 关闭资源
DBUtil.close(conn, ps, null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
if(isTrue){
out.println("<h1>修改成功!!!</h1>");
}else{
out.println("<h1>修改失败!!!</h1>");
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
9:SelectServlet查询页面Java代码:
package org.yangxin.service;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.yangxin.model.Student;
import org.yangxin.util.DBUtil;
public class SelectServelt extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
try {
System.out.println("你选择了查询学生信息:");
// 加载驱动
Connection conn = DBUtil.getConn();
// 准备sql语句
String sql = "SELECT * FROM student";
// 用PreparedStatement和数据库交互
PreparedStatement ps = conn.prepareStatement(sql);
// 用ResultSet存储查询的值
ResultSet rs = ps.executeQuery();
// 展示页面
ArrayList<Student> stuList = new ArrayList<Student>();
while (rs.next()) {
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("name"));
stu.setAge(rs.getInt("age"));
stuList.add(stu);
}
for (Student student : stuList) {
System.out.println(student.toString());
}
// 关闭资源
DBUtil.close(conn, ps, rs);
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("<h1>登录成功!!!</h1>");
out.println("<h1>查询所有学生信息</h1>");
for (Student student : stuList) {
out.println(student.toString());
out.println("<br />");
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
10:页面效果:
整体页面:
注册页面:
输入注册的内容之后:
点击之后:
修改页面:
输入修改的内容之后:
点击之后:
删除页面:
输入删除的id之后:
点击之后:
登录页面:
输入账号密码之后:
点击之后: