将美工制作的页面转变成JSP页面,使用转发、重定向等技术实现完整的员工管理功能
功能的完成顺序为查询(增加(删除(修改。在查询功能中,JSP页面负责展示,数据来源使用转发的技术从request对象中获取。请求的地址映射规则为后缀匹配模式,由一个ActionServlet处理分发请求。
步骤一:使用MyEclipse创建Servlet
在工程的src目录下,右键新建选择Servlet,通过向导进行Servlet的相关配置。如图-1
图– 1
填写Servlet所在的包为web,名称为ActionServlet。需要包含的方法只保留doGet的复选框。如图-2
图– 2
点击Next之后为配置路径的步骤。名字可以按需修改,Mapping填写“*.do”为后缀匹配模式,Display Name和Description可以不用填写。
图– 3
查看生成的文件中的代码,修改doGet的方法名称为service,保留前面两行用于设置输出的中文。其余的输出语句删除。如图-4
图 - 4
步骤二:将前面工程中的dao包和entity包拷贝到src中。
dao包下的DBUtil.java文件为获取连接关闭连接的工具类,EmployeeDAO.java文件为针对Employee的数据操作对象。ActionServlet.java文件为处理请求的控制类。如图-5所示为完整结构。
图 - 5
步骤三:完成员工信息显示功能
修改ActionServlet中的service方法,判断动作是否是list,查询数据后存入request中,并转发给listEmp.jsp页面。
修改service方法如图-6
图 - 6
WebRoot下面新建listEmp.jsp页面,复制静态代码至该页面,复制图片、css,修改page指令。项目结构如图-7,添加循环输出如图-8
图- 7
图 - 8
运行效果如图-9
图 - 9
步骤四:完成增加员工信息功能
新建addEmp.jsp,表单的action值为add.do。修改ActionServlet,添加对增加动作的处理。添加成功后,重定向到list.do,查看全部员工信息。
图 - 10
图– 11
运行结果
图 - 12
步骤五:完成删除员工信息功能
修改listEmp.jsp中删除操作的链接地址,修改ActionServler的判断分支。
图– 13
图– 14
图- 15
步骤六:完成修改员工信息功能
修改listEmp.jsp页面的修改功能的链接,修改ActionServlet.java的判断,添加update.jsp页面,能够成功加载某一个员工信息后,再修改update.jsp页面的action地址,修改ActionServlet的判断,完成修改保存后重定向到listEmp.jsp页面。
工程结果如图-16
图- 16
修改ActionServlet,添加加载的判断
图– 17
修改listEmp.jsp页面的修改链接的地址
图– 18
修改uploadEmp.jsp页面,读取绑定数据,将数据显示到表单中,如图-19
图– 19
运行,查看是否能够正确加载员工信息,如图-20
图 - 20
修改updateEmp.jsp页面的表单提交,修改ActionServlet,保存成功后重定向到list.do
图– 21
ActionServlet.java文件修改如图-22
图 - 22
DBUtil.java和EmployeeDAO.java和Employee.java文件代码参考前面的练习。
ActionServlet.java代码如下:
package web; 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 dao.EmployeeDAO; import dao.UserDAO; import entity.Employee; import entity.User; public class ActionServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置编码、解码格式 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); //获取请求资源路径,截取具体动作 String uri = request.getRequestURI(); String action = uri.substring(uri.lastIndexOf("/")+1, uri.lastIndexOf(".")); //创建员工管理操作类 EmployeeDAO dao = new EmployeeDAO(); //判断请求动作种类,分不同种类情况处理 if(action.equals("list")){//员工信息列表 try { List<Employee> emps = dao.findAll(); request.setAttribute("emps", emps); request.getRequestDispatcher("listEmp.jsp"). forward(request, response); } catch (Exception e) { e.printStackTrace(); } }else if(action.equals("add")){//增加员工 String name = request.getParameter("name"); double salary = Double.parseDouble(request. getParameter("salary")); int age = Integer.parseInt(request.getParameter("age")); Employee emp = new Employee(); emp.setName(name); emp.setSalary(salary); emp.setAge(age); try { dao.save(emp); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); } }else if(action.equals("delete")){//删除员工 int id = Integer.parseInt(request.getParameter("id")); try { dao.delete(id); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); } }else if(action.equals("load")){//加载某个员工 int id = Integer.parseInt(request.getParameter("id")); try { Employee emp = dao.findById(id); request.setAttribute("emp", emp); request.getRequestDispatcher("updateEmp.jsp"). forward(request, response); } catch (Exception e) { e.printStackTrace(); } }else if(action.equals("update")){//更新员工 int id = Integer.parseInt(request.getParameter("id")); String name = request.getParameter("name"); double salary = Double.parseDouble( request.getParameter("salary")); int age = Integer.parseInt(request.getParameter("age")); Employee emp = new Employee(); emp.setName(name); emp.setSalary(salary); emp.setAge(age); emp.setId(id); try { dao.modify(emp); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); } } } }
listEmp.jsp文件代码如下:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="entity.*,java.util.*"%> <html> <head> <title>员工列表</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> <div id="wrap"> <div id="top_content"> <div id="header"> <div id="rightheader"> <p> 2009/11/20 <br /> </p> </div> <div id="topheader"> <h1 id="title"> <a href="#">main</a> </h1> </div> <div id="navigation"></div> </div> <div id="content"> <p id="whereami"></p> <h1>员工信息</h1> <table class="table"> <tr class="table_header"> <td>编号</td> <td>姓名</td> <td>薪水</td> <td>年龄</td> <td>操作</td> </tr> <% List<Employee> emps = (List<Employee>) request. getAttribute("emps"); for (int i = 0; i < emps.size(); i++) { Employee emp = emps.get(i); %> <tr class="row<%=i % 2 + 1%>"> <td><%=emp.getId()%></td> <td><%=emp.getName()%></td> <td><%=emp.getSalary()%></td> <td><%=emp.getAge()%></td> <td> <a href="delete.do?id=<%=emp.getId()%>" onclick="return confirm('是否确认删除<%=emp.getName()%>信息?');">删除</a> <a href="load.do?id=<%=emp.getId()%>">修改</a></td> </tr> <% } %> </table> <p> <input type="button" class="button" value="增加员工" onclick="location='addEmp.jsp'" /> </p> </div> </div> <div id="footer"> <div id="footer_bg">ABC@126.com</div> </div> </div> </body> </html>
addEmp.jsp文件代码如下:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>增加员工</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> <div id="wrap"> <div id="top_content"> <div id="header"> <div id="rightheader"> <p> 2009/11/20 <br /> </p> </div> <div id="topheader"> <h1 id="title"> <a href="#">Main</a> </h1> </div> <div id="navigation"></div> </div> <div id="content"> <p id="whereami"></p> <h1>增加员工:</h1> <form action="add.do" method="post"> <table cellpadding="0" cellspacing="0" border="0" class="form_table"> <tr> <td valign="middle" align="right">姓名:</td> <td valign="middle" align="left"><input type="text" class="inputgri" name="name" /></td> </tr> <tr> <td valign="middle" align="right">薪水:</td> <td valign="middle" align="left"><input type="text" class="inputgri" name="salary" /></td> </tr> <tr> <td valign="middle" align="right">年龄:</td> <td valign="middle" align="left"><input type="text" class="inputgri" name="age" /></td> </tr> </table> <p> <input type="submit" class="button" value="增加" /> </p> </form> </div> </div> <div id="footer"> <div id="footer_bg">ABC@126.com</div> </div> </div> </body> </html>
updateEmp.jsp文件代码如下:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="entity.*" %> <html> <head> <title>修改员工信息</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> <div id="wrap"> <div id="top_content"> <div id="header"> <div id="rightheader"> <p> 2009/11/20 <br /> </p> </div> <div id="topheader"> <h1 id="title"> <a href="#">Main</a> </h1> </div> <div id="navigation"> </div> </div> <div id="content"> <p id="whereami"> </p> <h1> 更新员工 </h1> <% Employee emp = (Employee)request.getAttribute("emp"); %> <form action="update.do?id=<%=emp.getId()%>" method="post"> <table cellpadding="0" cellspacing="0" border="0" class="form_table"> <tr> <td valign="middle" align="right"> 编号: </td> <td valign="middle" align="left"> <%=emp.getId()%> </td> </tr> <tr> <td valign="middle" align="right"> 姓名: </td> <td valign="middle" align="left"> <input type="text" class="inputgri" name="name" value="<%=emp.getName()%>"/> </td> </tr> <tr> <td valign="middle" align="right"> 薪水: </td> <td valign="middle" align="left"> <input type="text" class="inputgri" name="salary" value="<%=emp.getSalary()%>"/> </td> </tr> <tr> <td valign="middle" align="right"> 年龄: </td> <td valign="middle" align="left"> <input type="text" class="inputgri" name="age" value="<%=emp.getAge()%>"/> </td> </tr> </table> <p> <input type="submit" class="button" value="修改" /> </p> </form> </div> </div> <div id="footer"> <div id="footer_bg"> ABC@126.com </div> </div> </div> </body> </html>
解决系统在出现异常时的不友好提示,避免客户端看到有关错误的任何说明。
两种解决方法,一种是编程式处理,即在捕获到异常时,绑定错误提示信息,转发到指定的错误页面。一种是声明式处理,即在捕获到异常时,将其封装成ServletException后抛给容器,在web.xml中添加配置,在捕获到异常后由容器控制着跳转到指定的错误页面。
步骤一:添加编程式处理的判断
图 - 23
步骤二:新建error.jsp页面,读取绑定的错误信息
图 - 24
步骤三:添加声明式处理的代码
图 - 25
步骤四:配置web.xml文件
图 - 26
ActionServlet.java文件代码:
package web; 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 dao.EmployeeDAO; import dao.UserDAO; import entity.Employee; import entity.User; public class ActionServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置编码、解码格式 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); //获取请求资源路径,截取具体动作 String uri = request.getRequestURI(); String action = uri.substring(uri.lastIndexOf("/")+1, uri.lastIndexOf(".")); //创建员工管理操作类 EmployeeDAO dao = new EmployeeDAO(); //判断请求动作种类,分不同种类情况处理 if(action.equals("list")){//员工信息列表 try { List<Employee> emps = dao.findAll(); request.setAttribute("emps", emps); request.getRequestDispatcher("listEmp.jsp"). forward(request, response); } catch (Exception e) { e.printStackTrace(); //编程式的处理异常 request.setAttribute("err_msg", "系统出错,请重试"); request.getRequestDispatcher("error.jsp"). forward(request, response); } }else if(action.equals("add")){//增加员工 String name = request.getParameter("name"); double salary = Double.parseDouble(request. getParameter("salary")); int age = Integer.parseInt(request.getParameter("age")); Employee emp = new Employee(); emp.setName(name); emp.setSalary(salary); emp.setAge(age); try { dao.save(emp); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); //将异常抛给容器,在web.xml中添加声明,变成声明式的处理异常 throw new ServletException(e); } }else if(action.equals("delete")){//删除员工 int id = Integer.parseInt(request.getParameter("id")); try { dao.delete(id); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); } }else if(action.equals("load")){//加载某个员工 int id = Integer.parseInt(request.getParameter("id")); try { Employee emp = dao.findById(id); request.setAttribute("emp", emp); request.getRequestDispatcher("updateEmp.jsp"). forward(request, response); } catch (Exception e) { e.printStackTrace(); } }else if(action.equals("update")){//更新员工 int id = Integer.parseInt(request.getParameter("id")); String name = request.getParameter("name"); double salary = Double.parseDouble( request.getParameter("salary")); int age = Integer.parseInt(request.getParameter("age")); Employee emp = new Employee(); emp.setName(name); emp.setSalary(salary); emp.setAge(age); emp.setId(id); try { dao.modify(emp); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); } } } }
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> <servlet> <servlet-name>actionServlet</servlet-name> <servlet-class>web.ActionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>actionServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <error-page> <exception-type>javax.servlet.ServletException</exception-type> <location>/error.jsp</location> </error-page> </web-app>
error.jsp文件代码:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>错误提醒</title> </head> <body style="font-size:24px"> <%=request.getAttribute("err_msg")==null ?"":request.getAttribute("err_msg")%><Br> 系统异常 <a href="list.do">返回</a> </body> </html>
绝对路径和相对路径的练习。
在工程中添加biz01和biz02两个文件夹,分别包含a1.jsp和a2.jsp两个文件,并且使用相对路径和绝对路径两种方式完成a1和a2之间的链接跳转。再增加一个SomeServlet,实现form.jsp表单数据提交时到Servlet的链接写法。
步骤一:新建a1.jsp和a2.jsp文件
分别创建biz01/a1.jsp 和 biz02/a2.jsp 两个文件,工程结构如图-27
图 - 27
步骤二:为a1.jsp和a2.jsp添加跳转链接
a1.jsp文件中的链接写法如下:
图 - 28
a2.jsp文件中的链接写法如下:
图- 29
步骤三:添加SomeServlet
图 - 30
步骤四:添加form.jsp文件
图– 31
form.jsp文件内容
图 - 32
a1.jsp文件代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body style="font-size:24px;"> a1.jsp's content<br/> 相对路径的写法: <a href="../biz02/a2.jsp">a2.jsp</a> 绝对路径的写法: <a href="/day05/biz02/a2.jsp">a2.jsp</a> 变量路径的写法: <a href="<%=request.getContextPath()%>/biz02/a2.jsp">a2.jsp</a> </body> </html>
a2.jsp文件代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body style="font-size:24px;"> a2.jsp's content<br/> 相对路径的写法: <a href="../biz01/a1.jsp">a1.jsp</a> 绝对路径的写法: <a href="/day05/biz01/a1.jsp">a1.jsp</a> 变量路径的写法: <a href="<%=request.getContextPath()%>/biz01/a1.jsp">a2.jsp</a> </body> </html>
SomeServlet.java文件代码
package path; 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; public class SomeServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); System.out.println("SomeServlet's service is running..."); //重定向到biz01/a1.jsp request.getRequestDispatcher("/biz01/a1.jsp").forward(request, response); } }
form.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> <!-- <form action="../some" method="post"> --> <form action="<%=request.getContextPath()%>/some" method="post"> <input type="text" name="name" /><br> <input type="submit" value="提交"/> </form> </body> </html>
为员工管理系统添加注册和登陆功能,注册时需要进行用户名是否存在的判断,如果存在则出现提示。
创建t_user表,编写User实体和UserDAO操作类。编写注册页面,提交到服务器以后,判断用户名是否存在,存在则绑定提示信息后转发回注册页面,页面输出绑定的提示信息,如果不存在则添加用户信息后重定向到登陆页面。登陆页面功能相同。
步骤一:创建t_user表
图 - 33
步骤二:创建entity.User类
图 - 34
步骤三:创建dao.UserDAO类
dao.DBUtil.java的内容同前面的练习一致
图- 35
步骤四:创建regist.jsp页面
将美工制作的注册页面内容复制到regist.jsp页面中
图- 36
步骤五:修改ActionServlet类
图– 37
修改regist.jsp页面,读取绑定的信息,非空则显示在文本框的后面。然后运行程序,查看效果
图– 38
图- 39
步骤六:创建login.jsp页面
图- 40
步骤七:修改ActionServlet页面
图– 41
修改login.jsp页面,读取绑定信息,非空则显示在文本框的后面
图- 42
运行查看结果。
User.java文件代码:
package entity; /** * 实体类:用于描述用户,与数据库中的t_user表中的字段一一对应 */ public class User { private int id; private String userName; private String pwd; private String name; private String gender; @Override public String toString() { return id + " " + userName + " " + pwd + " " + name + " " + gender; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } }
UserDAO.java文件的代码
package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import entity.User; /** * 用户的数据操作类 */ public class UserDAO { /** * 根据用户名称查找用户对象 * @param userName 用户名称 * @return 用户实体 */ public User findByUserName(String userName) throws Exception { User user = null; Connection con = null; PreparedStatement stmt = null; ResultSet rs = null; try { con = DBUtil.getConnection(); stmt = con.prepareStatement("select * from t_user where username=?"); stmt.setString(1, userName); rs = stmt.executeQuery(); if (rs.next()) { user = new User(); user.setId(rs.getInt("id")); user.setUserName(rs.getString("username")); user.setName(rs.getString("name")); user.setPwd(rs.getString("pwd")); user.setGender(rs.getString("gender")); } } catch (Exception e) { e.printStackTrace(); throw e; } finally { DBUtil.close(con); } return user; } /** * 保存实体信息到数据库 */ public void save(User user) throws Exception { Connection con = null; PreparedStatement stmt = null; try { con = DBUtil.getConnection(); stmt = con.prepareStatement("insert into t_user values(user_id_seq.nextval,?,?,?,?)"); stmt.setString(1, user.getUserName()); stmt.setString(2, user.getPwd()); stmt.setString(3, user.getName()); stmt.setString(4, user.getGender()); stmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); throw e; } finally { DBUtil.close(con); } } }
ActionServlet.java文件代码
package web; 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 dao.EmployeeDAO; import dao.UserDAO; import entity.Employee; import entity.User; public class ActionServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置编码、解码格式 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 获取请求资源路径,截取具体动作 String uri = request.getRequestURI(); String action = uri.substring(uri.lastIndexOf("/") + 1, uri.lastIndexOf(".")); // 创建员工管理操作类 EmployeeDAO dao = new EmployeeDAO(); // 判断请求动作种类,分不同种类情况处理 if (action.equals("list")) {// 员工信息列表 try { List<Employee> emps = dao.findAll(); request.setAttribute("emps", emps); request.getRequestDispatcher("listEmp.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); // 编程式的处理异常 request.setAttribute("err_msg", "系统出错,请重试"); request.getRequestDispatcher("error.jsp").forward(request, response); } } else if (action.equals("add")) {// 增加员工 String name = request.getParameter("name"); try { double salary = Double.parseDouble(request .getParameter("salary")); int age = Integer.parseInt(request.getParameter("age")); Employee emp = new Employee(); emp.setName(name); emp.setSalary(salary); emp.setAge(age); dao.save(emp); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); // 将异常抛给容器,在web.xml中添加声明,变成声明式的处理异常 throw new ServletException(e); } } else if (action.equals("delete")) {// 删除员工 int id = Integer.parseInt(request.getParameter("id")); try { dao.delete(id); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); } } else if (action.equals("load")) {// 加载某个员工 int id = Integer.parseInt(request.getParameter("id")); try { Employee emp = dao.findById(id); request.setAttribute("emp", emp); request.getRequestDispatcher("updateEmp.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } else if (action.equals("update")) {// 更新员工 int id = Integer.parseInt(request.getParameter("id")); String name = request.getParameter("name"); double salary = Double.parseDouble(request.getParameter("salary")); int age = Integer.parseInt(request.getParameter("age")); Employee emp = new Employee(); emp.setName(name); emp.setSalary(salary); emp.setAge(age); emp.setId(id); try { dao.modify(emp); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); } } else if (action.equals("regist")) {//注册 UserDAO userDAO = new UserDAO(); String userName = request.getParameter("username"); String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); String gender = request.getParameter("sex"); try { User u = userDAO.findByUserName(userName); if (u != null) { request.setAttribute("regis_err", "用户名已经存在"); request.getRequestDispatcher("regist.jsp").forward( request, response); } else { u = new User(); u.setUserName(userName); u.setName(name); u.setPwd(pwd); u.setGender(gender); userDAO.save(u); response.sendRedirect("login.jsp"); } } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } else if (action.equals("login")) {//登陆 String userName = request.getParameter("name"); String pwd = request.getParameter("pwd"); UserDAO userDAO = new UserDAO(); try { User u = userDAO.findByUserName(userName); if (u == null || !u.getPwd().equals(pwd)) { request.setAttribute("login_err", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward( request, response); } else { response.sendRedirect("list.do"); } } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } } }
regist.jsp文件代码
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>注册</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> <div id="wrap"> <div id="top_content"> <div id="header"> <div id="rightheader"> <p> 2009/11/20 <br /> </p> </div> <div id="topheader"> <h1 id="title"> <a href="#">main</a> </h1> </div> <div id="navigation"> </div> </div> <div id="content"> <p id="whereami"> </p> <h1> 注册 </h1> <form action="regist.do" method="post"> <table cellpadding="0" cellspacing="0" border="0" class="form_table"> <tr> <td valign="middle" align="right"> 用户名: </td> <td valign="middle" align="left"> <input type="text" class="inputgri" name="username" /> <% String errorMsg = (String)request.getAttribute("regis_err"); %><span style="color:red;"><%=errorMsg==null?"":errorMsg%></span> </td> </tr> <tr> <td valign="middle" align="right"> 真实姓名: </td> <td valign="middle" align="left"> <input type="text" class="inputgri" name="name" /> </td> </tr> <tr> <td valign="middle" align="right"> 密码: </td> <td valign="middle" align="left"> <input type="password" class="inputgri" name="pwd" /> </td> </tr> <tr> <td valign="middle" align="right"> 性别: </td> <td valign="middle" align="left"> 男 <input type="radio" class="inputgri" name="sex" value="m" checked="checked"/> 女 <input type="radio" class="inputgri" name="sex" value="f"/> </td> </tr> <tr> <td valign="middle" align="right"> 验证码: <img id="num" src="image" /> <a href="javascript:;" onclick="document.getElementById('num').src = 'image?'+(new Date()).getTime()">换一张</a> </td> <td valign="middle" align="left"> <input type="text" class="inputgri" name="number" /> </td> </tr> </table> <p> <input type="submit" class="button" value="Submit »" /> </p> </form> </div> </div> <div id="footer"> <div id="footer_bg"> ABC@126.com </div> </div> </div> </body> </html>
login.jsp文件代码
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>login</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> <div id="wrap"> <div id="top_content"> <div id="header"> <div id="rightheader"> <p> 2009/11/20 <br /> </p> </div> <div id="topheader"> <h1 id="title"> <a href="#">main</a> </h1> </div> <div id="navigation"></div> </div> <div id="content"> <p id="whereami"></p> <h1>login</h1> <form action="login.do" method="post"> <table cellpadding="0" cellspacing="0" border="0" class="form_table"> <tr> <td valign="middle" align="right">用户名:</td> <td valign="middle" align="left"> <input type="text" class="inputgri" name="name" /> <% String errorMsg = (String)request.getAttribute("login_err"); %><span style="color:red;"><%=errorMsg==null?"":errorMsg%></span> </td> </tr> <tr> <td valign="middle" align="right">密码:</td> <td valign="middle" align="left"><input type="password" class="inputgri" name="pwd" /> </td> </tr> </table> <p> <input type="submit" class="button" value="Submit »" /> </p> </form> </div> </div> <div id="footer"> <div id="footer_bg">ABC@126.com</div> </div> </div> </body> </html>