用servlet和jsp做探索数据库

时间:2023-03-09 03:49:37
用servlet和jsp做探索数据库

1.建一个web文件,在里面分三层,分别是实体层;DAO层,DAO层里面包含BaseDAO(数据访问层)和DAO层;还有一个servlet层,处理数据逻辑层!

一、实体层,建立两个实体,一个members,和一个product:

 package com.chinasoft.jsptest.entity;

 public class Menbers {
private int id;
private String name;
private String pwd;
private String email;
private String born;
private String sex; public Menbers() {
super();
// TODO Auto-generated constructor stub
} public Menbers(String name, String pwd, String email, String born,
String sex) {
super();
this.name = name;
this.pwd = pwd;
this.email = email;
this.born = born;
this.sex = sex;
} public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public String getBorn() {
return born;
} public void setBorn(String born) {
this.born = born;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
}
}
 package com.chinasoft.jsptest.entity;

 public class Product {
public int id ;
public String name ;
public String money ;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
} }

二、DAO层

1.BaseDAO

 package com.chinasofti.jsptest.dao;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class BaseDAO {
//1.链接数据库
String className="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String connectionString="jdbc:sqlserver://127.0.0.1;DatabaseName=JspTest";
String username="sa";
String userpwd="123456"; private Connection conn;
private PreparedStatement pst;
private ResultSet rst; //2. 链接上表
public BaseDAO(){
try {
Class.forName(className);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void getconnection(){
try {
conn=DriverManager.getConnection(connectionString,username,userpwd);
} catch (SQLException e) {
e.printStackTrace();
}
} public ResultSet ExecuteQuest(String sql){
getconnection();
return ExecuteQuest(sql,new Object[]{});
}
public ResultSet ExecuteQuest(String sql, Object[] params) {
getconnection();
try {
pst=conn.prepareStatement(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int i=0;i<params.length;i++){
try { pst.setObject(i+1, params[i]);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
rst=pst.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rst;
} public int ExecuteUpdate(String sql){
getconnection();
return ExecuteUpdate(sql,new Object[]{});
}
public int ExecuteUpdate(String sql,Object[] params){
getconnection();
int result=0;
try {
pst=conn.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
for(int i=0;i<params.length;i++){
try {
pst.setObject(i+1, params[i]);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
result=pst.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
} public void CloseAll(){
try{
if(!rst.isClosed()){
rst.close();
}
if(!pst.isClosed()){
pst.close();
}
if(!conn.isClosed()){
conn.close();
}
}catch(Exception e){
System.out.println(e.getMessage());
}
} }

2.DAO

 package com.chinasofti.jsptest.dao;

 import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.chinasoft.jsptest.entity.Menbers; public class MenbersDAO {
//1.new一个
private BaseDAO dao = new BaseDAO();
//2.增加ExecuteUpdate;
public void Add(Menbers meb){
String sql = "insert into [test]([id],[name],[pwd],[email],[born],[sex]) values (?,?,?,?,?,?)";
Object[] params=new Object[]{meb.getId(),meb.getName(),meb.getPwd(),meb.getEmail(),meb.getBorn(),meb.getSex()};
dao.ExecuteUpdate(sql,params);
}
//3.删除ExecuteUpdate;
public void Delete(Menbers meb){
String sql = "delete from [test] where [id]=?";
Object[] params = new Object[]{meb.getId()};
dao.ExecuteUpdate(sql,params);
}
//4.修改ExecuteUpdate;
public void Update(Menbers meb){
String sql="update [tset] set [name]=?,[pwd]=? WHERE [id]=?";
Object [] params=new Object[]{meb.getName(),meb.getPwd(),meb.getId()};
dao.ExecuteUpdate(sql,params);
}
//5.查找全部ExecuteQuest;
public List<Menbers> getselect(){
List<Menbers> result=new ArrayList<Menbers>();
String sql="SELECT [id],[name],[pwd] ,[email],[sex]FROM [test]";
ResultSet rst=dao.ExecuteQuest(sql);
try{
while(rst.next()){
Menbers temp=new Menbers();
temp.setId(rst.getInt(1));
temp.setName(rst.getString(2));
temp.setPwd(rst.getString(3));
temp.setEmail(rst.getString(4));
temp.setSex(rst.getString(5));
result.add(temp);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dao.CloseAll();
return result;
}
//6.按照ID查找ExecuteQuest;
public Menbers getSelectid(int id){
Menbers result=null;
String sql="SELECT [id],[name],[pwd] FROM [test] WHERE [id]=?";
Object[] params=new Object[]{id};
ResultSet rst=dao.ExecuteQuest(sql,params);
try {
if(rst.next()){
result = new Menbers();
result.setId(rst.getInt(1));
result.setName(rst.getString(2));
result.setPwd(rst.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dao.CloseAll();
return result;
}
//7.按照name查找ExecuteQuest;
public Menbers getSelectname(String name){
Menbers result=null;
String sql="SELECT [id],[name],[pwd] FROM [test] WHERE [name]=?";
Object[] params=new Object[]{name};
ResultSet rst=dao.ExecuteQuest(sql,params);
try {
if(rst.next()){
result = new Menbers();
result.setId(rst.getInt(1));
result.setName(rst.getString(2));
result.setPwd(rst.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dao.CloseAll();
return result;
} }

MembersDAO

 package com.chinasofti.jsptest.dao;

 import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import com.chinasoft.jsptest.entity.Product; public class ProductDAO {
private BaseDAO dao = new BaseDAO();
//1.增加
public void Add(Product put){
String sql ="insert into [Product]([name],[money]) values(?,?)";
Object[] params = new Object[]{put.getName(),put.getMoney()};
dao.ExecuteUpdate(sql, params);
}
//2.删除
public void delete(int id){
String sql ="delete [Product] where [id]=?";
Object[] params = new Object[]{id};
dao.ExecuteUpdate(sql, params);
}
//3.更改
public void Update (Product put){
String sql ="update [Product] set [name]=?,[money]=? where [id]=?";
Object[] params = new Object[]{put.getName(),put.getMoney(),put.getId()};
dao.ExecuteUpdate(sql, params);
}
//4.查找全部
public List <Product > getSelect(){
List <Product> result=new ArrayList<Product>();
String sql ="select [id] ,[name],[money] from [Product] ";
ResultSet rst = dao.ExecuteQuest(sql);
try {
while (rst.next()){
Product pro = new Product();
pro.setId(rst.getInt(1));
pro.setName(rst.getString(2));
pro.setMoney(rst.getString(3));
result.add(pro);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dao.CloseAll();
return result;
}
//5.根据name查找
public Product getname(String name){
Product pro = null;
Object [] params = new Object[]{name};
String sql ="select [name],[money],[id] from [Product] where[name]=? ";
ResultSet rst = dao.ExecuteQuest(sql,params);
try {
while (rst.next()){
pro = new Product();
pro.setId(rst.getInt(1));
pro.setName(rst.getString(2));
pro.setMoney(rst.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dao.CloseAll();
return pro; } }

ProductDAO

三、servlet层 需要建servlet类,里面会直接生成servlet/xxxx地址。这样在访问的时候,就直接访问这个地址

1.登录注册的逻辑判断层,主要注意request的用法;还有就是跳转jsp以后,jsp用post方法提交到的action地址,是servlet映射的地址!这个在WebRoot-web-inf-web.hml可以找到

 package com.chinasofti.jsptest.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 com.chinasoft.jsptest.entity.Menbers;
import com.chinasofti.jsptest.dao.MenbersDAO; @SuppressWarnings("serial")
public class goset extends HttpServlet { /**
* Constructor of the object.
*/
public goset() {
super();
} /** */
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} /**
*
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("../go30-1.jsp").forward(request, response);//指向你要过去的JSP,进行逻辑判断以后,以post方法,进行下面的逻辑判断
} /**
*
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
String emai = request.getParameter("email");
String born = request.getParameter("born");
String sex = request.getParameter("sex");
String type = request.getParameter("type");
if ("login".equals(type)) {
MenbersDAO dao = new MenbersDAO();
Menbers m = dao.getSelectname(name);
if (m != null && m.getPwd().equals(pwd)) {
request.setAttribute("title", "登陆成功");
request.setAttribute("retn", "欢迎你," + name + "。");
request.getRequestDispatcher("../go30-2.jsp").forward(request,
response);//指向你要过去的JSP
} else if (m != null && !m.getPwd().endsWith(pwd)) {
request.setAttribute("title", "登陆失败");
request.setAttribute("retn", "用户名或密码错误!请重新登录 ");
request.getRequestDispatcher("../go30-3.jsp").forward(request,
response);//指向你要过去的JSP
} else {
request.setAttribute("retn", "你不是公司员工,请入职以后再登入");
request.getRequestDispatcher("../go30-4.jsp").forward(request,
response);//指向你要过去的JSP
}
} else if ("register".equals(type)) {
Menbers m = new Menbers(name, pwd, emai, born, sex);
MenbersDAO dao = new MenbersDAO();
dao.Add(m);
request.getRequestDispatcher("../go30-4.jsp").forward(request,
response);//指向你要过去的JSP
} } /**
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
} }

goset.java

2.显示全部界面,只用看get方法就好了
 package com.chinasofti.jsptest.servlet;

 import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.chinasoft.jsptest.entity.Product;
import com.chinasofti.jsptest.dao.ProductDAO; public class ProductSevlet extends HttpServlet { /**
* Constructor of the object.
*/
public ProductSevlet() {
super();
} public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ProductDAO dao = new ProductDAO();
List<Product> ms= dao.getSelect();
request.setAttribute("Model", ms);
request.getRequestDispatcher("../Product.jsp").forward(request, response); } /**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
PrintWriter out = response.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.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
} /**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
} }

ProducAction.java

 package com.chinasofti.jsptest.servlet;

 import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.chinasoft.jsptest.entity.Menbers;
import com.chinasofti.jsptest.dao.MenbersDAO; public class UserList extends HttpServlet { /**
* Constructor of the object.
*/
public UserList() {
super();
} /**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} /**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { MenbersDAO dao= new MenbersDAO();
List <Menbers> ms = dao.getselect();
request.setAttribute("Model", ms);
request.getRequestDispatcher("../UserList.jsp").forward(request, response);
} /**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
PrintWriter out = response.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.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
} /**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
} }

UserList.java

jsp界面,所有的显示界面

 <form method="post" action="<%=request.getContextPath() %>/servlet/goset">
<input type="hidden" name="type" value="login">
<table border="0" align="center">
<tr>
<td>用户名</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="pwd"></td>
</tr> <tr>
<td colspan="2" align="center"><input type="submit" value="登录" />&nbsp;&nbsp; <input type="reset" value="取消" /></td>
</tr>
</table>
</form>

go30-1.jsp

  <h1 align="center">  <%=title%>  </h1>
<h3 align="center"> <%=retn%> </h3>

go30-2.jsp

 <h1 align="center">  <%=retn%>  </h1>
<form method="post">
<table border="0" align="center" >
<tr> <td>用户名</td><td> <input type="text" name="name"></td></tr>
<tr><td>密码</td><td > <input type="password" name="pwd"> </td></tr> <tr><td colspan="2" align="center">
<input type="submit" value="登录" />&nbsp;&nbsp; <input type="reset" value="取消" />
</td></tr>
</table>
</form>

go30-3.jsp

 <h1 align="center">
<%=retn%>
</h1>
<form method="post" action="<%=request.getContextPath() %>/servlet/goset">
<input type="hidden" name="type" value="register">
<table border="0" align="center">
<tr>
<td>用户名</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="pwd"></td>
</tr>
<tr>
<td>邮箱</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>出生日期</td>
<td><input type="text" name="born"></td>
</tr>
<tr>
<td>性别</td>
<td>男<input type="radio" name="sex" value="男"> 女<input
type="radio" name="sex" value="女"></td>
</tr> <tr>
<td colspan="2" align="center"><input type="submit" value="注册" />&nbsp;&nbsp; <input type="reset" value="取消" /></td>
</tr>
</table>
</form>

go30-4.jsp

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

  <table>
<tr width="300">
<td width="100">id</td>
<td width="100">name</td>
<td width="100">money</td>
</tr>
<c:forEach var="m" items= "${Model}">
<tr>
<td>${m.id}</td>
<td>${m.name}</td>
<td>${m.email}</td> </tr>
</c:forEach> </table>

Product.jsp

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 <table>
<tr width="500">
<td width="100">id</td>
<td width="100">name</td>
<td width="100">pwd</td>
<td width="100">email</td>
<td width="100">born</td>
<td width="100">sex</td>
</tr>
<c:forEach var="m" items= "${Model}">
<tr>
<td >${m.id}</td>
<td >${m.name}</td>
<td >${m.pwd}</td>
<td >${m.email}</td>
<td >${m.born}</td>
<td >${m.sex}</td> </tr>
</c:forEach> </table>

UserLise.jsp