1.创建如下文件目录
2.导入MyBatis的jar文件
3.创建实体类
package com.entity; public class Userinfo { private Integer uid; private String uname; private String password; private Integer age; public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Userinfo() { super(); } public Userinfo(String uname, String password) { super(); this.uname = uname; this.password = password; } public Userinfo(Integer uid, String uname, String password, Integer age) { super(); this.uid = uid; this.uname = uname; this.password = password; this.age = age; } @Override public String toString() { return "Userinfo [uid=" + uid + ", uname=" + uname + ", password=" + password + ", age=" + age + "]"; } }
4.创建分页page类
package com.entity; public class Page { private Integer pageNo; private Integer pageSize; private Integer pageCount; private Integer totalpage; private Integer stratrow; private Integer endrow; public Integer getStratrow() { return stratrow; } public void setStratrow(Integer stratrow) { this.stratrow = stratrow; } public Integer getEndrow() { return endrow; } public void setEndrow(Integer endrow) { this.endrow = endrow; } public Integer getPageNo() { return pageNo; } public void setPageNo(Integer pageNo) { this.pageNo = pageNo; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getPageCount() { return pageCount; } public void setPageCount(Integer pageCount) { this.pageCount = pageCount; } public Integer getTotalpage() { return totalpage; } public void setTotalpage(Integer totalpage) { this.totalpage = totalpage; } public Page(Integer pageNo, Integer pageSize, Integer pageCount, Integer totalpage) { super(); this.pageNo = pageNo; this.pageSize = pageSize; this.pageCount = pageCount; this.totalpage = totalpage; } public Page(Integer pageNo, Integer pageSize, Integer pageCount) { super(); this.pageNo = pageNo; this.pageSize = pageSize; this.pageCount = pageCount; this.totalpage=pageCount%pageSize==0?pageCount/pageSize:pageCount/pageSize+1; this.stratrow=(pageNo-1)*pageSize; this.endrow=pageNo*pageSize; } public Page() { super(); } }
5.创建Basedao
package com.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * 定义Basedao * @author sam * */ public class Basedao { //1.定义连接数据库的信息 private static String DRIVER="oracle.jdbc.driver.OracleDriver"; private static String URL="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; private static String username="holly"; private static String password="tiger"; //2.定义链接对象 public Connection conn=null; //3.定义从数据库中操作的执行对象 public PreparedStatement ptsm=null; //4.定义查询结果的返回对象 public ResultSet rs=null; //5.静态代码块链接数据库驱动 static{ try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block System.out.println("数据库异常"); e.printStackTrace(); } } //6.定义链接数据库的方法 public Connection getConnection(){ try { //驱动管理对象去加载数据库地址,用户名,密码链接数据库 conn=DriverManager.getConnection(URL, username, password); } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("连接数据库异常"); e.printStackTrace(); } return conn; } //7.定义销毁对象的方法 public void closeAll(Connection conn,PreparedStatement ptsm,ResultSet rs){ try { if (rs!=null) { rs.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if (ptsm!=null) { ptsm.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if (conn!=null) { conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //8.定义执行查询的方法 public ResultSet executeQuery(String sql,Object[] param){ conn=this.getConnection(); try { //从建立的链接中获取执行查询的对象,请获取sql语句 ptsm=conn.prepareStatement(sql); //将sql对象补充完整 if (param!=null) { for (int i = 0; i < param.length; i++) { ptsm.setObject(i+1, param[i]); } } //获取查询结果 rs=ptsm.executeQuery(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return rs; } //9.定义增删改的方法 public int executeUpdate(String sql,Object[] param){ int num=0; conn=this.getConnection(); try { //从建立的链接中获取执行查询的对象,请获取sql语句 ptsm=conn.prepareStatement(sql); //将sql对象补充完整 if (param!=null) { for (int i = 0; i < param.length; i++) { ptsm.setObject(i+1, param[i]); } } //获取查询结果 num=ptsm.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ this.closeAll(conn, ptsm, rs); } return num; } }
6.数据层操作层接口
package com.dao; import java.util.List; import com.entity.Page; import com.entity.Userinfo; /** * 数据层操作层接口 * @author Administrator * */ public interface UserinfoDao { List<Userinfo> findAll(); Userinfo getByID(Integer ID); Userinfo getByNameByPWD(Userinfo userinfo); int insert(Userinfo userinfo); int delete(Integer ID); int update(Userinfo userinfo); int totalCount(); List<Userinfo> pagefind(Page page); }
7.数据操作层的实现类
package com.dao.impl; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.dao.Basedao; import com.dao.UserinfoDao; import com.entity.Page; import com.entity.Userinfo; /** * 数据操作层的实现类 * 继承basedao实现数据访问接口 * * rs解析中的字段必须与数据库保持一致 * @author Administrator * */ public class UserinfoDaoImpl extends Basedao implements UserinfoDao{ /** * 查询所有 */ public List<Userinfo> findAll() { // TODO Auto-generated method stub String sql="select * from userinfo"; rs=this.executeQuery(sql, null); List<Userinfo> list=new ArrayList<Userinfo>(); try { while (rs.next()) { Userinfo userinfo=new Userinfo(rs.getInt("id"), rs.getString("uname"), rs.getString("password"), rs.getInt("age")); list.add(userinfo); } } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("查询所有解析异常"); e.printStackTrace(); }finally{ this.closeAll(conn, ptsm, rs); } return list; } /** * 根据ID查询 */ public Userinfo getByID(Integer ID) { // TODO Auto-generated method stub String sql="select * from userinfo where id=?"; Object[] param={ID}; this.executeQuery(sql, param); Userinfo userinfo=null; try { if (rs.next()) { userinfo=new Userinfo(rs.getInt("id"), rs.getString("uname"), rs.getString("password"), rs.getInt("age")); } } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("find ID error"); e.printStackTrace(); }finally{ this.closeAll(conn, ptsm, rs); } return userinfo; } /** * 根据用户名查询 */ public Userinfo getByNameByPWD(Userinfo userinfo) { // TODO Auto-generated method stub String sql="select * from userinfo where uname=? and password=?"; Object[] param={userinfo.getUname(),userinfo.getPassword()}; this.executeQuery(sql, param); Userinfo user=null; try { if (rs.next()) { user=new Userinfo(rs.getInt("id"), rs.getString("uname"), rs.getString("password"), rs.getInt("age")); } } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("find ID error"); e.printStackTrace(); }finally{ this.closeAll(conn, ptsm, rs); } return user; } /** * 添加 */ public int insert(Userinfo userinfo) { // TODO Auto-generated method stub String sql="insert into userinfo values(seq_userinfo.nextval,?,?,?)"; Object[] param={userinfo.getUname(),userinfo.getPassword(),userinfo.getAge()}; int num=this.executeUpdate(sql, param); return num; } /** * 删除 */ public int delete(Integer ID) { // TODO Auto-generated method stub String sql="delete from userinfo where id=?"; Object[] param={ID}; int num=this.executeUpdate(sql, param); return num; } /** * 修改 */ public int update(Userinfo u) { // TODO Auto-generated method stub String sql="update userinfo set uname=?,password=?,age=? where id=?"; Object[] param={u.getUname(),u.getPassword(),u.getAge(),u.getUid()}; int num=this.executeUpdate(sql, param); return num; } /** * 查询总条数 */ public int totalCount() { // TODO Auto-generated method stub String sql="select count(*) from userinfo"; int num=0; rs=this.executeQuery(sql, null); try { if (rs.next()) { num=rs.getInt(1); } } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("查总条数返回结果异常"); e.printStackTrace(); } return num; } /** * 分页查询 */ public List<Userinfo> pagefind(Page page) { // TODO Auto-generated method stub String sql="select * from " + "(select rownum r,u.* from userinfo u where rownum<=" +page.getEndrow()+ ") where r>"+page.getStratrow(); System.out.println("查询的sql语句是:"+sql); rs=this.executeQuery(sql, null); List<Userinfo> list=new ArrayList<Userinfo>(); try { while (rs.next()) { Userinfo userinfo=new Userinfo(rs.getInt("id"), rs.getString("uname"), rs.getString("password"), rs.getInt("age")); list.add(userinfo); } } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("查询所有解析异常"); e.printStackTrace(); }finally{ this.closeAll(conn, ptsm, rs); } return list; } }
8.业务逻辑接口
package com.service; import java.util.List; import com.entity.Userinfo; /** * 业务逻辑接口 * @author Administrator * */ public interface UserinfoService { List<Userinfo> findAll(); Userinfo getByID(Integer ID); Userinfo login(String uname,String pwd); int insert(Userinfo userinfo); int delete(Integer ID); int update(Userinfo userinfo); int totalCount(); List<Userinfo> pagefind(int pageNo,int pageSize); }
9.业务方法实现类
package com.service.impl; import java.util.List; import com.dao.UserinfoDao; import com.dao.impl.UserinfoDaoImpl; import com.entity.Page; import com.entity.Userinfo; import com.service.UserinfoService; /** * 业务方法实现类 * @author Administrator * */ public class UserinfoServiceImpl implements UserinfoService { private UserinfoDao udao=new UserinfoDaoImpl(); public List<Userinfo> findAll() { // TODO Auto-generated method stub return udao.findAll(); } public Userinfo getByID(Integer ID) { // TODO Auto-generated method stub return udao.getByID(ID); } public Userinfo login(String uname,String pwd) { // TODO Auto-generated method stub Userinfo userinfo=new Userinfo(uname, pwd); return udao.getByNameByPWD(userinfo); } public int insert(Userinfo userinfo) { // TODO Auto-generated method stub return udao.insert(userinfo); } public int delete(Integer ID) { // TODO Auto-generated method stub return udao.delete(ID); } public int update(Userinfo userinfo) { // TODO Auto-generated method stub return udao.update(userinfo); } public int totalCount() { // TODO Auto-generated method stub return udao.totalCount(); } /** * 分页 */ public List<Userinfo> pagefind(int pageNo,int pageSize) { // TODO Auto-generated method stub Page page=new Page(pageNo, pageSize, udao.totalCount()); return udao.pagefind(page); } }
10.servlet代码
package com.servlet; import java.io.IOException; 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.entity.Page; import com.entity.Userinfo; import com.service.UserinfoService; import com.service.impl.UserinfoServiceImpl; public class UserinfoServlet extends HttpServlet { /** * 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 { doPost(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 { //1.乱码处理 response.setContentType("text/html;Charset=UTF-8"); response.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8"); UserinfoService us=new UserinfoServiceImpl(); //2.拦截form中数据 String uname=request.getParameter("name"); String password=request.getParameter("pwd"); String uage=request.getParameter("age"); String uid=request.getParameter("id"); String pano=request.getParameter("pano");//页面数 String flag=request.getParameter("flag");//页面数 int id=0; if (uid!=null) { id=Integer.parseInt(uid); } int age=0; if (uage!=null) { age=Integer.parseInt(uage); } int pageNo=1; if (pano!=null) { pageNo=Integer.parseInt(pano); } int pageSize=3; Page page=new Page(pageNo, pageSize, us.totalCount()); //查询所有 if (flag==null) { System.out.println("进入分页方法"); List<Userinfo> list=us.pagefind(pageNo, pageSize); if (list!=null) { request.setAttribute("list", list); request.setAttribute("page", page); for (Userinfo userinfo : list) { System.out.println(userinfo); } request.getRequestDispatcher("show.jsp").forward(request, response); } else { System.out.println("查询分页失败"); } //添加 }else if (flag.equals("add")) { Userinfo userinfo=new Userinfo(1, uname, password, age); System.out.println("添加的用户是:"+userinfo); int num=us.insert(userinfo); if (num>0) { response.sendRedirect("UserinfoServlet"); } else { System.out.println("添加失败"); } //查找单条 }else if (flag.equals("findone")) { System.out.println(); Userinfo userinfo=us.getByID(id); System.out.println("修改的userinfo是"+userinfo); if (userinfo!=null) { request.setAttribute("u", userinfo); request.getRequestDispatcher("update.jsp").forward(request, response); } else { System.out.println("查询单条失败"); } //修改 }else if (flag.equals("update")) { Userinfo userinfo=new Userinfo(id, uname, password, age); int num=us.update(userinfo); if (num>0) { System.out.println("修改成功"); response.sendRedirect("UserinfoServlet"); } else { System.out.println("修改失败"); } //删除 }else if (flag.equals("delete")) { int num=us.delete(id); if (num>0) { response.sendRedirect("UserinfoServlet"); } else { System.out.println("删除失败"); } } } }
11.webXML文件
<?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> <servlet> <servlet-name>UserinfoServlet</servlet-name> <servlet-class>com.servlet.UserinfoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserinfoServlet</servlet-name> <url-pattern>/UserinfoServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
11.add.jsp
<%@ 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 'add.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> <center> <form action="UserinfoServlet?flag=add" method="post"> <table border="1px" style=" 400px"> <tr> <td>姓名</td> <td><input type="text" name="name" /></td> </tr> <tr> <td>密码</td> <td><input type="text" name="pwd" /></td> </tr> <tr> <td>年龄:</td> <td><input type="text" name="age" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="提交注册" /></td> </tr> </table> </form> </center> </body> </html>
12.index.jsp
<%@ 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"> --> </head> <body> <center> <fieldset style=" 400px"> <legend>登录</legend> <form action="UserinfoServlet" method="post"> <table border="1px"> <tr> <td>姓名:</td> <td><input type="text" name="name"/></td> </tr> <tr> <td>密码:</td> <td><input type="text" name="pwd"/></td> </tr> <tr> <td colspan="2"><input type="submit"/></td> </tr> </table> </form> </fieldset> </center> </body> </html>
13.show.jsp
<%@ 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+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'show.jps' 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> <center> <a href="add.jsp">添加</a> <table border="1px" style=" 400px"> <tr> <td>姓名</td> <td>密码</td> <td>年龄</td> <td>操作</td> </tr> <c:forEach items="${list}" var="i"> <tr> <td>${i.uname}</td> <td>${i.password}</td> <td>${i.age}</td> <td><a href="UserinfoServlet?flag=findone&id=${i.uid}">修改</a><a href="UserinfoServlet?flag=delete&id=${i.uid}">删除</a></td> </tr> </c:forEach> <tr> <td colspan="4"><a href="UserinfoServlet?pano=1">首页</a> <c:choose> <c:when test="${page.pageNo>1}"> <a href="UserinfoServlet?pano=${page.pageNo-1}">上一页</a> </c:when> <c:otherwise> <a href="javaScript:alert('已经是首页了')">上一页</a> </c:otherwise> </c:choose> <c:choose> <c:when test="${page.pageNo<page.totalpage}"> <a href="UserinfoServlet?pano=${page.pageNo+1}">下一页</a> </c:when> <c:otherwise> <a href="javaScript:alert('已经是末页了')">下一页</a> </c:otherwise> </c:choose> <a href="UserinfoServlet?pano=${page.totalpage}">末页</a></td> </tr> </table> </center> </body> </html>
14.update.jsp
<%@ 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 'update.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> <center> <form action="UserinfoServlet?flag=update" method="post"> <table border="1px" style=" 400px"> <tr> <td>编号:</td> <td><input type="text" name="id" value="${u.uid}" readonly="readonly"/></td> </tr> <tr> <td>姓名</td> <td><input type="text" name="name" value="${u.uname}"/></td> </tr> <tr> <td>密码</td> <td><input type="text" name="pwd" value="${u.password}"/></td> </tr> <tr> <td>年龄:</td> <td><input type="text" name="age" value="${u.age}"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="提交修改" /></td> </tr> </table> </form> </center> </body> </html>