web Services的使用
web Services的使用
1.UserDao.java 用于对数据库进行操作
package com.mobiletrain.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.mobiletrain.pojo.Users; import com.sun.org.apache.bcel.internal.generic.GETSTATIC; public class UserDao { Connection conn; Statement st;// PreparedStatement ResultSet rs; public void getSatement() { // 加载驱动 try { Class.forName("org.sqlite.JDBC"); // 获得COnnection对象 conn = DriverManager.getConnection("jdbc:sqlite:d:/mytest.db"); st = conn.createStatement(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void closeConn() { if (st != null) { try { st.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public void createUserTable() { getSatement(); try { st.execute( "create table if not exists users(_id integer primary key autoincrement,uname string,pwd string)"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { closeConn(); } } public boolean addUser(String name, String pwd) { getSatement(); try { // insert into users(uname,pwd) values('admin','admin') int count = st.executeUpdate("insert into users(uname,pwd) values('" + name + "','" + pwd + "')"); if (count > 0) { return true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { closeConn(); } return false; } // 是否能登录 public boolean isLogin(String name, String pwd) { getSatement(); try { rs = st.executeQuery("select pwd from users where uname='" + name + "'"); while (rs.next()) { if (pwd.equals(rs.getString("pwd"))) { return true; } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { closeConn(); } return false; } public List<Users> getAllUsers() { getSatement(); List<Users> list = new ArrayList<Users>(); try { rs = st.executeQuery("select * from users"); while (rs.next()) { Users users = new Users(); users.setId(rs.getInt("_id")); users.setName(rs.getString("uname")); users.setPwd(rs.getString("pwd")); list.add(users); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list; } public boolean delete(int id){ getSatement(); try { int i=st.executeUpdate("delete from users where _id="+id); if (i>0) { return true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ closeConn(); } return false; } public boolean update(String uname,String pwd,int id){ getSatement(); try { int i=st.executeUpdate("update users set uname='"+uname+"',pwd='"+pwd+"' where _id="+id); if (i>0) { return true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ closeConn(); } return false; } public Users getUsersById(int id){ getSatement(); try { rs=st.executeQuery("select * from users where _id="+id); if (rs.next()) { Users u = new Users(); u.setId(rs.getInt("_id")); u.setName(rs.getString("uname")); u.setPwd(rs.getString("pwd")); return u; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ closeConn(); } return null; } public static void main(String[] args) { UserDao dao = new UserDao(); dao.createUserTable(); // dao.addUser("张三", "admin"); // dao.addUser("里斯", "maxiaoyun"); // dao.addUser("王二麻子", "liyanhong"); 事先想数据库加入数据 为用户登录的数据做比较 if (dao.isLogin("admin", "admin")) { System.out.println("登录成功!"); } if (dao.delete(1)) { System.out.println("删除成功"); } if (dao.update("李四", "lisi", 5)) { System.out.println("修改成功"); } System.out.println(dao.getUsersById(2)); System.out.println("----------"); List<Users> list = dao.getAllUsers(); for (Users users : list) { System.out.println(users); } } }
2.Users.java 封装用户信息
package com.mobiletrain.pojo; public class Users { private int id; private String name; private String pwd; 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; } @Override public String toString() { return "Users [id=" + id + ", name=" + name + ", pwd=" + pwd + "]"; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
3.DeleteServlet.java 后台处理删除操作
package com.mobiletrain.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.mobiletrain.dao.UserDao; /** * Servlet implementation class DeleteServlet */ @WebServlet("/delete") public class DeleteServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DeleteServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //接受传过来的参数 String id = request.getParameter("id"); int _id = Integer.parseInt(id); UserDao dao = new UserDao(); if (dao.delete(_id)) { request.getRequestDispatcher("userList.jsp").forward(request, response); }else { response.sendRedirect("error.html"); } } }
4.DoUpdateServlet.java 后台处理更新操作
package com.mobiletrain.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.mobiletrain.dao.UserDao; /** * Servlet implementation class DoUpdateServlet */ @WebServlet("/doUpdate") public class DoUpdateServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DoUpdateServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = Integer.parseInt(request.getParameter("id")); String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); UserDao dao = new UserDao(); if (dao.update(name, pwd, id)) { response.sendRedirect("userList.jsp"); }else { response.sendRedirect("error.jsp"); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
5.LoginServlet.java 后台处理登录操作 程序运行的 第二步:request.getRequestDispatcher("userList.jsp").forward(request, response); 方法指定运行userList.jsp页面
package com.mobiletrain.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.websocket.Session; import com.mobiletrain.dao.UserDao; /** * Servlet implementation class LoginServlet */ // URL Mapping @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LoginServlet() { super(); // TODO Auto-generated constructor stub } /** * HttpServletRequest request 处理请求 HttpServletResponse response,响应 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 接受客户端传过来的用户名 和密码 String name = request.getParameter("uname");// 用户名 //name.getBytes("iso-8859-1") 按照iso-8859-1编码解码 //get请求的汉字乱码的处理 name = new String(name.getBytes("iso-8859-1"),"utf-8"); String pwd = request.getParameter("pwd");// 密码 System.out.println(name + "----" + pwd); // 连接数据库 UserDao dao = new UserDao(); if (dao.isLogin(name, pwd)) {// 登录成功 // 页面跳转 1) 转发 可以携带数据 2) 重定向 不能带参数 // 转发到success.html HttpSession session = request.getSession(); session.setAttribute("uname", name); request.getRequestDispatcher("userList.jsp").forward(request, response); } else {// 登录失败 // 重定向到登录页面 response.sendRedirect("login.html"); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
6.UpdateServlet.java
package com.mobiletrain.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.mobiletrain.dao.UserDao; import com.mobiletrain.pojo.Users; /** * Servlet implementation class UpdateServlet */ @WebServlet("/update") public class UpdateServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public UpdateServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = Integer.parseInt(request.getParameter("id")); UserDao dao = new UserDao(); Users u = dao.getUsersById(id); if (u!=null) { //给request对象设置一个属性 request.setAttribute("u", u); request.getRequestDispatcher("update.jsp").forward(request, response); }else{ response.sendRedirect("error.jsp"); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }
7.error.jsp 前台的显示错误的页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>Sorry,操作失败!!!</h1> </body> </html>
8.login.html 第一步 先运行该程序,执行登录页面,当点击提交按钮时 通过action="login"属性 从后台的java代码中找到 @WebServlet("/login") 然后执行该java代码
说明:运行的时候数据库应该事先具有数据,可以后台运行main方法为数据库添加几条数据,这样在登陆页面输入用户名和密码时才能与数据库进行比较
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <!-- get:参数的参数会在地址栏显示 获取数据 携带的参数的大小有限制 不安全 post:不会显示 提交数据 上次文件 post无限制 安全 --> <form action="login" method="get"> <table> <tr> <td>用户名:</td> <!-- 如果文本框输入的值需要传递给服务端,则必须设置name属性 服务端根据name属性的值来获取客户端的值 --> <td><input type="text" name="uname"> </td> </tr> <tr> <td>密 码:</td> <!-- 如果文本框输入的值需要传递给服务端,则必须设置name属性 服务端根据name属性的值来获取客户端的值 --> <td><input type="password" name="pwd"> </td> </tr> <tr> <td><input type="submit" value="登录"> </td> <td><input type="reset" value="重置"> </td> </tr> </table> </form> </body> </html>
9.success.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <!-- 嵌套java代码 --> <%=request.getParameter("uname") %>,登录成功! </body> </html>
10.update.jsp 前台的更新数据页面
<%@page import="com.mobiletrain.pojo.Users"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% Users u = (Users)request.getAttribute("u"); %> <form action="doUpdate"> <table border="1"> <tr> <td>编号</td> <td><input type="text" value="<%=u.getId() %>" name="id" readonly="readonly"> </td> </tr> <tr> <td>用户名</td> <td><input type="text" value="<%=u.getName() %>" name="name"> </td> </tr> <tr> <td>密码</td> <td><input type="password" value="<%=u.getPwd() %>" name="pwd"> </td> </tr> <tr> <td><input type="submit" value="确定"> </td> </tr> </table> </form> </body> </html>
11.userList.jsp 显示数据表
<%@page import="com.mobiletrain.dao.UserDao"%> <%@page import="com.mobiletrain.pojo.Users"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <div align="center"> <a href="javaScript:if(confirm('确认退出吗?'))location.href='login.html';">退出</a> <table border="1"> <tr> <td>编号</td> <td>用户名</td> <td>密 码</td> <td>操作</td> </tr> <% List<Users> list = new UserDao().getAllUsers(); for(Users u:list){ %> <tr> <td><%=u.getId() %> </td> <td><%=u.getName() %> </td> <td><%=u.getPwd() %> </td> <td> <a href="javaScript:if(confirm('是否删除?'))location.href='delete?id=<%=u.getId() %>';">删除</a> <a href="javaScript:if(confirm('是否修改?'))location.href='update?id=<%=u.getId() %>';">修改</a> </td> </tr> <% } %> </table> </div> </body> </html>