创建数据库的代码:
drop database if exists info; create database info; use info; create table infotable(name varchar(20), age varchar(10), mail varchar(100), time date);
jsp文件的代码:
addInfo.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <% 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> <form action="servlet/AddInfoServlet" method="post"> 请登记个人信息:<br> 姓名:<input type="text" name="name"/><br> 年龄:<input type="text" name="age"/><br> 邮箱:<input type="text" name="mail"/><br> <input type="submit" value="提交并查看"/> <input type="reset" value="重置"/> </form> </body> </html>
viewInfo.jsp代码:
<%@ page language="java" contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*,info.*,java.util.*" %> <% 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 'viewInfo.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>所有用户信息如下:<hr> </center> <% int infoCount=0; //直接从request中获得所有记录 Collection messages=(Collection)request.getAttribute("messages"); Iterator it=messages.iterator(); while(it.hasNext()) { InfoBean message=(InfoBean)it.next(); out.println("姓名:"+message.getName()+", 年龄:"+message.getAge()+", 邮箱:"+message.getMail()+", 时间:"+message.getDate()+"<br>"); out.print("\n"); } %> </body> </html>
JavaBean部分的代码:
package info; public class InfoBean { private String name; private String age; private String mail; private java.sql.Date date; public void setName(String name) { this.name=name; } public String getName() { return name; } public void setAge(String age) { this.age=age; } public String getAge() { return age; } public void setMail(String mail) { this.mail=mail; } public String getMail() { return mail; } public void setDate(java.sql.Date date) { this.date=date; } public java.sql.Date getDate() { return date; } }
Servlet部分的代码:
AddInfoServlet.java代码:
package info; import java.util.*; import java.sql.*; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AddInfoServlet extends HttpServlet { private Connection con=null; /** * Constructor of the object. */ public AddInfoServlet() { //super(); String CLASSFORNAME="com.mysql.jdbc.Driver"; String SERVANDDB="jdbc:mysql://127.0.0.1:3306/info"; String USER="root"; String PWD="123456"; try { Class.forName(CLASSFORNAME).newInstance(); //建立数据库连接con con=DriverManager.getConnection(SERVANDDB,USER,PWD); System.out.println( "数据库加载成功" ); } catch(Exception e) { //e.printStackTrace();//捕捉可能出现的异常 System.out.println( "数据库加载失败" ); } } /** * 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 { 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 { //System.out.println( "post方法" ); response.setContentType("text/html;charset=gb2312"); PrintWriter out = response.getWriter(); String name=request.getParameter("name"); String age=request.getParameter("age"); String mail=request.getParameter("mail"); try{ //向表中插入信息 PreparedStatement stm=con.prepareStatement("insert into infotable values(?,?,?,?)"); stm.setString(1,name); stm.setString(2,age); stm.setString(3,mail); stm.setDate(4, new java.sql.Date(new java.util.Date().getTime())); try{ stm.executeUpdate(); System.out.println( "插入信息成功" ); } catch(Exception e) { System.out.println( "插入信息失败" ); } //将请求转向ViewInfoServlet,用于查询数据库中的所有记录,然后调用JSP界面显示 RequestDispatcher requestDispatcher=request.getRequestDispatcher("ViewInfoServlet"); requestDispatcher.forward(request, response);//转发请求到ViewInfoServlet System.out.println( "转发request" ); } catch(Exception e) { e.printStackTrace(); } } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here } }
ViewInfoServlet.java代码:
package info; import java.util.*; import java.sql.*; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ViewInfoServlet extends HttpServlet { private Connection con=null; /** * Constructor of the object. */ public ViewInfoServlet() { //super(); String CLASSFORNAME="com.mysql.jdbc.Driver"; String SERVANDDB="jdbc:mysql://127.0.0.1:3306/info"; String USER="root"; String PWD="123456"; try { Class.forName(CLASSFORNAME).newInstance(); //建立数据库连接con con=DriverManager.getConnection(SERVANDDB,USER,PWD); System.out.println( "view连接数据库成功" ); } catch(Exception e) { e.printStackTrace();//捕捉可能出现的异常 System.out.println( "连接数据库失败" ); } } /** * 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 { 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 { response.setContentType("text/html"); PrintWriter out = response.getWriter(); Collection ret=new ArrayList(); try { Statement st=con.createStatement(); //查询表中有几条记录 ResultSet result=st.executeQuery("select count(*) from infotable"); int infoCount=0; if(result.next()) { infoCount=result.getInt(1);//得到infotable表中的记录数 result.close(); } if(infoCount>0) { //按照时间顺序查询表infotable中的所有记录 result=st.executeQuery("select * from infotable order by time desc"); while(result.next()) { String name=result.getString("name"); String age=result.getString("age"); String mail=result.getString("mail"); java.sql.Date date=result.getDate("time"); //创建InfoBean对象,用于存储数据库中的数据 InfoBean infoBO=new InfoBean(); infoBO.setName(name); infoBO.setAge(age); infoBO.setMail(mail); infoBO.setDate(date); ret.add(infoBO); } result.close(); st.close(); } //将所有存储infoBO对象的集合添加到request对象中 request.setAttribute("messages", ret); RequestDispatcher requestDispatcher = request.getRequestDispatcher("/viewInfo.jsp"); requestDispatcher.forward(request, response);//将request发送出去 } catch(Exception e) { e.printStackTrace(); } } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here } }
填写个人信息界面:
提交之后显示全部的个人信息界面: