一、相关要求和步骤
1.编写注册页面(zc.jsp),效果如下:
2.根据注册页面需要用户填写的栏目,在数据库(这里命名为:a_dbtest)中创建名为userinfomation(可自行命名)的用户信息表(表中字段根据需要创建),这里效果如下:
3.当注册信息填写完,点击提交按钮,程序跳转到后台注册用的servlet中(自行定义和配置servlet),然后在servlet的合适方法里边获得前台注册页面提交过来的用户注册数据,然后使用jdbc编程的相关代码将注册数据插入到userinfo用户信息表中,若插入成功,则跳转到注册成功页面(succ.jsp),插入失败,则跳转到失败页面(err.jsp)提示注册失败
4.注册成功页面(succ.jsp),要求在注册页面中嵌入合适的java代码从userinfomation用户信息表中查询出所有的用户信息并显示到页面上,效果图如下:
二、效果展示
三、代码
1.数据库处理工具类代码(DbHandle.java)
package DBtool;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DbHandle {
Connection conn=null;
Statement st=null;
ResultSet rs=null;
//得到数据库链接
public void getConnection() {
final String DRIVERNAME = "com.mysql.jdbc.Driver"; //mysql数据库驱动
//?前面改为自己建立的数据库的名字,这里数据库名是a_dbtest
final String URL = "jdbc:mysql://localhost:3306/a_dbtest?useUnicode=true&characterEncoding=utf-8";
final String LOGIN = "root"; //数据库名
final String PASSWORD ="123456"; //数据库密码
try {
Class.forName(DRIVERNAME); //装载mysql数据库驱动
conn=DriverManager.getConnection(URL,LOGIN,PASSWORD);
//使用DriverManager类的getConnection方法来获得一个数据库连接对象(也就是这个方法返回)
System.out.println("数据库连接成功");
}catch(Exception e) {
System.out.println("执行getConnection()方法出错,");
e.printStackTrace();
}
}
//查询
public ResultSet executeQuery(String sql) {
try {
if(conn==null) {
getConnection();
}
rs=st.executeQuery(sql);
}catch(Exception e){
System.out.println("执行executeQuery(String sql)方法错误"+sql);
e.printStackTrace();
}
return rs;
}
//修改和插入
public int executeUpdate(String sql) {
int ret;
try {
if(conn == null) {
getConnection();
}
if(st==null) {
st=conn.createStatement();
}
ret=st.executeUpdate(sql);
}catch(Exception e) {
System.out.println("执行executeUpdate(sql)方法错误"+sql);
e.printStackTrace();
ret = -1;
}
return ret;
}
//关闭数据库连接的方法
public void close() {
try {
if(rs!=null) {
rs.close();
}
if(st!=null) {
st.close();
}
if(conn!=null) {
conn.close();
}
}catch(Exception e) {
System.out.println("执行close()方法出错");
e.printStackTrace();
}
}
}
2.servlet代码(RegServlet.java)
package servlet;
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 DBtool.DbHandle;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* RegServlet implementation class RegServlet
*/
@WebServlet("/RegServlet")
public class RegServlet extends HttpServlet {
private String username; //用户姓名
private String password; //密码
private String sex; //性别
private String age; //年龄
private String phone; //电话
private String a=""; //爱好
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RegServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
int flag; //设置判断
List<Map> list =new ArrayList<Map>();//创建list集合用于存入map的键值对集合
try {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//获取前台输入信息
username = request.getParameter("username"); //用户姓名
password = request.getParameter("password"); //密码
sex = request.getParameter("sex"); //性别
age = request.getParameter("age"); //年龄
phone = request.getParameter("phone"); //电话
a = ""; //爱好重置
String []likee = request.getParameterValues("hobby"); //爱好
for(String s:likee)a=a+" "+s;
likee = null; //清空数组
//将数据存入数据库
DbHandle dbh = new DbHandle();
String sql = "insert into userinfomation values('"+username+"','"+password+"','"+sex+"','"+age+"','"+phone+"','"+a+"')";
if(dbh.executeUpdate(sql)>0){
System.out.print("存入成功\n");
flag = 1;
}
else{
System.out.print("存入失败\n");
flag = 0;
}
//从数据库读取的内容,返回一个结果集。
ResultSet rs = dbh.executeQuery("SELECT * FROM userinfomation;");
System.out.println("获取数据\n");
while (rs.next()) { //
String username = rs.getString("username");
String password = rs.getString("password");
String sex = rs.getString("sex");
String age = rs.getString("age");
String phone = rs.getString("phone");
String hobby = rs.getString("hobby");
//用循环接收数据库的表格信息
Map map = new HashMap();
map.put("username", username);
map.put("password", password);
map.put("sex", sex);
map.put("age", age);
map.put("phone", phone);
map.put("hobby", hobby);
//用键值对存入到map集合中
System.out.println(map);
list.add(map);//在将map集合对象存入list集合
System.out.println("放入集合");
for (Map map_1 :list) {
System.out.println(map_1);
}//在打印台遍历出数据查看是否有错误
}//遍历结果集
request.setAttribute("key_list",list);//将list集合数据放入到request中共享
System.out.println("跳转");
if(flag == 1){
request.getRequestDispatcher("succ.jsp").forward(request, response);
}else{
request.getRequestDispatcher("err.jsp").forward(request, response);
}
dbh.close();//关闭数据库
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.web.xml中加入的代码
<!-- 定义一个servlet -->
<servlet>
<servlet-name>RegServlet</servlet-name> <!-- //servlet的名字(自己命名,每个servlet取名唯一) -->
<servlet-class>servlet.RegServlet</servlet-class> <!-- //servlet程序所在的地址(对应的包、类的名称) -->
</servlet>
<!-- 给servlet取名 -->
<servlet-mapping>
<servlet-name>RegServlet</servlet-name> <!-- servlet的名字(与上面的servlet名字对应) -->
<url-pattern>/RegServ</url-pattern> <!-- 具体的映射路径(别名,自己命名,每个servlet别名唯一),前面必须有一个'/' -->
</servlet-mapping>
4.jsp注册页面代码(zc.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<form action="RegServ" method="post" name="myform">
<table>
<caption>请输入注册信息:</caption> <%--标题 --%>
<tr>
<td>用户姓名:</td>
<td><input type="text" name="username" ></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" ></td>
</tr>
<tr>
<td>性别:</td>
<td><input type="radio" name="sex" value="男" checked>男
<input type="radio" name="sex" value="女" >女</td>
</tr>
<tr>
<td>年龄:</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td>电话:</td>
<td><input type="text" name="phone"></td>
</tr>
<tr>
<td>兴趣爱好:</td>
<td><input type="checkbox" name="hobby" value="唱歌">唱歌
<input type="checkbox" name="hobby" value="跳舞">跳舞
<input type="checkbox" name="hobby" value="跑步">跑步
<input type="checkbox" name="hobby" value="看书">看书</td>
</tr>
<tr>
<td><input type="submit" onclick="validate()" value="提交" />
<input type="reset" value="取消"></td>
</tr>
</table>
</form>
<%! int i = 0; %>
<% i++; %>
<% out.print(" "); %>
当前页面被访问的次数为:<%=i%>
</body>
</html>
5.jsp注册成功页面代码(succ.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@page import="java.sql.*"%>
<%@ taglib prefix='c' uri="http://java.sun.com/jstl/core_rt"%>
<html>
<head>
<title>注册成功页面</title>
</head>
<body>
注册成功!
<%request.setCharacterEncoding("UTF-8");%>
<table border='1'>
<tr align="center" bgcolor="#a9a9a9">
<td><b>姓名</b></td>
<td><b>密码</b></td>
<td><b>性别</b></td>
<td><b>年龄</b></td>
<td><b>电话</b></td>
<td><b>爱好</b></td>
</tr>
<c:forEach items="${key_list}" var="usr" varStatus="status">
<tr align="center">
<td>${usr.username}</td>
<td>${usr.password}</td>
<td>${usr.sex}</td>
<td>${usr.age}</td>
<td>${usr.phone}</td>
<td>${usr.hobby}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
6.jsp注册失败页面代码(err.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<html>
<head>
<title>注册失败页面</title>
</head>
<body>
注册失败!
</body>
</html>