Servlet的增删改查

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之后:在这里插入图片描述

点击之后:
在这里插入图片描述

登录页面:

输入账号密码之后:
在这里插入图片描述

点击之后:
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值