使用JSP+servLet实现宠物管理系统,oraC1e11g作为后台数据厍,实现查看宠物和增加宠物
的功能由你实现,如图:
其中宠物包栝:狗、猫、鸟、鼠
具体要求及推荐实现步骤
第一步:创建数据库代码:
create table pet ( petId number(10) not null primary key, --id petName varchar2(50) not null, --昵称 petBread varchar(50) not null, --品种 petSex varchar(10) not null, --性别 birthday date not null, --出生日期 description varchar(400) --描述 ) --序列自增 create sequence pet_squ start with 1 increment by 1 nomaxvalue cache 10; drop table pet --删除宠物表 drop sequence pet_squ --删除序列 --插入数据 insert into pet values ('1','aa','狗','雄',to_date('2015-05-26','yyyy-mm-dd'),'聪明的拉布拉多犬'); insert into pet values (pet_squ.nextval,'bb','猫','雄',to_date('2015-05-26','yyyy-mm-dd'),'可爱的加菲猫'); insert into pet values (pet_squ.nextval,'cc','鸟','雄',to_date('2015-05-26','yyyy-mm-dd'),'活泼的鸟'); insert into pet values (pet_squ.nextval,'dd','鼠','雄',to_date('2015-05-26','yyyy-mm-dd'),'可爱的小白鼠'); insert into pet values (pet_squ.nextval,'ee','猫','雄',to_date('2015-05-26','YYYY-MM-dd'),'可爱的加菲猫'); select * from pet --查询所有宠物
第二步:建立宠物实体类entity(pet)
package entity; /** * 宠物实体类 * @author Administrator * */ public class pet { private int petId; //--id private String petName ; //--昵称 private String petBread ;//--品种 private String petSex; //--性别 private String birthday ;//--出生日期 private String description;//--描述 public int getPetId() { return petId; } public void setPetId(int petId) { this.petId = petId; } public String getPetName() { return petName; } public void setPetName(String petName) { this.petName = petName; } public String getPetBread() { return petBread; } public void setPetBread(String petBread) { this.petBread = petBread; } public String getPetSex() { return petSex; } public void setPetSex(String petSex) { this.petSex = petSex; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
第三步:建立数据库 帮助类DB(记得导入架包)
package DB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JNDI { //数据库名和登入密码 String driver="oracle.jdbc.driver.OracleDriver"; String url="jdbc:oracle:thin:@localhost:1521:ORCL"; String user = "epet"; String pwd = "123456"; //建立数据库连接方法 public Connection getConnection(){ //加载驱动 try { //第一步:加载驱动 Class.forName(driver); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } Connection con =null; //获取连接对象 try { con =DriverManager.getConnection(url,user,pwd); //连接数据库 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return con; } //======释放资源方法======= public void ShiFang(ResultSet rs, Statement st,Connection con){ //如果结果集不为空,则释放成功 ,否则失败 try { if(rs!=null){ rs.close(); }if(st!=null){ st.close(); }if(con!=null){ con.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
第四步:三层架构(数据查询层+业务逻辑层+表示层JSP)
1、创建Biz(业务逻辑层)
package Biz; import java.util.List; import entity.pet; /** * 业务逻辑层 * @author Administrator * */ public interface petBiz { //查询宠物信息 public List<pet> returnList(); //添加宠物信息 public int insertPet(pet pet); //根据宠物类型查询宠物信息 public List<pet> selectPet(String petType); }
package Biz.Impl; import java.util.List; import entity.pet; import Biz.petBiz; import Dao.petDao; import Dao.Impl.petDaoImpl; public class petBizImpl implements petBiz { //实例化数据连接层 petDao pe=new petDaoImpl(); public List<pet> returnList() { return pe.returnList(); } public int insertPet(pet pet) { // TODO Auto-generated method stub return pe.insertPet(pet); } public List<pet> selectPet(String petType) { // TODO Auto-generated method stub return pe.selectPet(petType); } }
2、创建DAO(数据查询层)
package Dao; import java.util.List; import entity.pet; /** * 数据查询层 * @author Administrator * */ public interface petDao { //查询宠物信息 public List<pet> returnList(); //添加宠物信息 public int insertPet(pet pet); //根据宠物类型查询宠物信息 public List<pet> selectPet(String petType); }
package Dao.Impl; 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 entity.pet; import DB.JNDI; import Dao.petDao; public class petDaoImpl extends JNDI implements petDao { private Connection cn; private PreparedStatement ps; private ResultSet rs; public List<pet> returnList() { List<pet> li=new ArrayList<pet>(); cn=super.getConnection(); String sql="select * from pet order by petId"; try { ps=cn.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ pet pe=new pet(); pe.setPetId(rs.getInt("petId")); pe.setPetName(rs.getString("petName")); pe.setPetBread(rs.getString("petBread")); pe.setPetSex(rs.getString("petSex")); pe.setBirthday(rs.getString("birthday")); pe.setDescription(rs.getString("description")); li.add(pe); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return li; } public int insertPet(pet pet) { int i=0; cn=super.getConnection(); String sql="insert into pet values (pet_squ.nextval,?,?,?,to_date(?,'YYYY-MM-dd'),?)"; try { ps=cn.prepareStatement(sql); ps.setString(1,pet.getPetName() ); ps.setString(2, pet.getPetBread()); ps.setString(3,pet.getPetSex() ); ps.setString(4,pet.getBirthday() ); ps.setString(5,pet.getDescription() ); i=ps.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return i; } public List<pet> selectPet(String petType) { List<pet> li=new ArrayList<pet>(); if(petType.equals("请选择")){ cn=super.getConnection(); String sql="select * from pet order by petId"; try { ps=cn.prepareStatement(sql); rs=ps.executeQuery(); while(rs.next()){ pet pe=new pet(); pe.setPetId(rs.getInt("petId")); pe.setPetName(rs.getString("petName")); pe.setPetBread(rs.getString("petBread")); pe.setPetSex(rs.getString("petSex")); pe.setBirthday(rs.getString("birthday")); pe.setDescription(rs.getString("description")); li.add(pe); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ cn=super.getConnection(); String sql="select * from pet where petBread=? order by petId"; try { ps=cn.prepareStatement(sql); ps.setString(1,petType); rs=ps.executeQuery(); while(rs.next()){ pet pe=new pet(); pe.setPetId(rs.getInt("petId")); pe.setPetName(rs.getString("petName")); pe.setPetBread(rs.getString("petBread")); pe.setPetSex(rs.getString("petSex")); pe.setBirthday(rs.getString("birthday")); pe.setDescription(rs.getString("description")); li.add(pe); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return li; } }
第五步:创建实现Servlet的配置(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"> <!-- 注册 --> <servlet> <servlet-name>selectPet</servlet-name> <servlet-class>servlet.selectPet</servlet-class> </servlet> <!-- 映射 --> <servlet-mapping> <servlet-name>selectPet</servlet-name> <url-pattern>/selectPet</url-pattern> </servlet-mapping> <!-- 注册 --> <servlet> <servlet-name>servletInsert</servlet-name> <servlet-class>servlet.servletInsert</servlet-class> </servlet> <!-- 映射 --> <servlet-mapping> <servlet-name>servletInsert</servlet-name> <url-pattern>/servletInsert</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
部署servlet:
package 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 entity.pet; import Biz.petBiz; import Biz.Impl.petBizImpl; public class selectPet extends HttpServlet { /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { System.out.println("初始化servlet"); } /** * 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 { System.out.println("test_get"); petBiz pet=new petBizImpl(); List<pet> li=pet.returnList(); request.getSession().setAttribute("list", li); response.sendRedirect("index.jsp"); System.out.println("test"); } /** * 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 { request.setCharacterEncoding("utf-8"); String petType=request.getParameter("petType"); String pett=""; if(("").equals(petType)||petType==null){ pett="请选择"; }else{ petType=new String(petType.getBytes("ISO8859-1"),"UTF-8"); pett=petType; } petBiz pet=new petBizImpl(); List<pet> li=pet.selectPet(pett); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); request.getSession().setAttribute("list", li); response.sendRedirect("index.jsp"); } /** * Destruction of the servlet. <br> */ public void destroy() { System.out.println("销毁servlet"); } }
配置添加宠物servlect
package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import Biz.petBiz; import Biz.Impl.petBizImpl; import entity.pet; public class servletInsert extends HttpServlet{ @Override public void init() throws ServletException { // TODO Auto-generated method stub System.out.println("servlet初始化成功"); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("Test_Get"); PrintWriter out =response.getWriter(); out.print("tets"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); pet pet=new pet(); pet.setPetName(request.getParameter("petname")); pet.setPetBread(request.getParameter("select")); pet.setPetSex(request.getParameter("radio")); pet.setBirthday(request.getParameter("bornDate")); pet.setDescription(request.getParameter("textarea")); petBiz pb=new petBizImpl(); int i=pb.insertPet(pet); request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out =response.getWriter(); if(i>0){ response.sendRedirect("index.jsp"); }else{ response.sendRedirect("insert.jsp"); } } @Override public void destroy() { // TODO Auto-generated method stub System.out.println("销毁servlet"); } }
3、三层架构之表示层(jsp)
<%@page import="entity.pet"%> <%@page import="Biz.Impl.petBizImpl"%> <%@page import="Biz.petBiz"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; List<pet> list=(List)request.getSession().getAttribute("list"); request.setAttribute("pet", list); String []petArray={"请选择","猫","狗","鸟","鼠"}; request.setAttribute("petArray", petArray); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>显示页</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"> <style type="text/css"> table tr th{width:100px;background:grey} table tr td{width:100px;} </style> <script type="text/javascript"> function petChange(){ var select =document.getElementById("select").value; document.getElementById("form").action="selectPet?petType="+select; document.getElementById("form").method="post" document.getElementById("form").submit(); } </script> </head> <body> <div> <p> <form id="form"> 品种 <select name="select" id="select" > <c:forEach var="petArray" items="${requestScope.petArray }"> <option <c:if test="${petArray}">selected=selected</c:if> value="${petArray }">${petArray }</option> </c:forEach> </select> <input type="submit" value="提交" onclick="petChange()"/> <a href="insert.jsp">添加宠物</a> </form> </p> <table> <tr> <th>宠物昵称</th> <th>出生日期</th> <th>性别</th> </tr> <c:forEach var="pet" items="${requestScope.pet }" varStatus="stauts"> <tr <c:if test="${stauts.index%2==1}">style="background-color:rgb(219,241,212)"</c:if>> <td>${pet.petName } </td> <td>${pet.birthday }</td> <td>${pet.petSex }</td> </tr> </c:forEach> </table> </div> </body> </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 'insert.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"> --> </head> <body> <form action="servletInsert" method="post" onsubmit="return check()"> <table> <tr> <th colspan="2">宠物基本信息</th> </tr> <tr> <td>昵称:</td> <td><input type="text" name="petname" id="petname" /></td> </tr> <tr> <td>品种</td> <td> <select name="select" id="select""> <option value="请选择">--请选择--</option> <option value="狗">狗</option> <option value="猫">猫</option> <option value="鸟">鸟</option> <option value="鼠">鼠</option> </select> </td> </tr> <tr> <td>性别</td> <td> <input type="radio" value="雄" name="radio" checked="checked"/>雄 <input type="radio" value="雌" name="radio"/>雌 </td> </tr> <tr> <td>出生日期</td> <td><input type="text" name="bornDate" id="bornDate"/> <span id="span"></span></td> </tr> <tr> <td>宠物描述</td> <td> <textarea name="textarea" id="textarea" cols="60" rows="10"> </textarea> </td> </tr> <tr> <td colspan="2" style="text-align:center"> <input type="submit" value="提交"/> <input type="reset" value="重置"/> </td> </tr> </table> </form> <script language="javascript"> function check(){ var petname =document.getElementById("petname").value; var select =document.getElementById("select").value; var bornDate =document.getElementById("bornDate").value; var textarea =document.getElementById("textarea").value; var span =document.getElementById("span"); var reg=/^(18|20)dd-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])/; if(petname==""){ alert("宠物名称不能为空"); return false; } if(select=="请选择"){ alert("请选择宠物类型"); return false; } if(bornDate==""){ alert("请输入宠物出生日期"); return false; } if(reg.test(bornDate)==false){ span.innerHTML="YYYY-MM-DD"; alert("日期格式错误"); return false; } if(textarea==" "){ alert("请输入宠物描述"); return false; } } </script> </body> </html>