1.用户信息注册流程
2.用户信息注册
2.1.准备工作
1.创建用户信息表——User.frm
-
create table users ( userID int primary key auto_increment, userName varchar(50), password varchar(50), sex char(1), email varchar(50) ) #插入示例成员信息 insert into users(userName,password,sex,email) values ('mike','123','男','mike@163.com') insert into users(userName,password,sex,email) values ('tom','123','男','tom@163.com')
2.在src下com.bjpowernode.entity.Users 新建实体类
package com.bjpowernode.entity;
public class Users {
private Integer userID;
private String userName;
private String password;
private String sex;
private String email;
public Integer getUserID() {
return userID;
}
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
public String getSex() {
return sex;
}
public String getEmail() {
return email;
}
// 构造方法
public Users() {
}
public Users(Integer userID, String userName, String password, String sex, String email) {
this.userID = userID;
this.userName = userName;
this.password = password;
this.sex = sex;
this.email = email;
}
}
3.在src下,引入com.bjpowernode.util.JdbcUtil 工具类【复用】
package com.bjpowernode.util
import java.sql.*
public class JdbcUtil{
final String URL="jdbc:mysql://localhost:3306/bjpowernode";
final String USERNAME = "root";
final String PASSWORD = "123";
PreparedStatement ps= null;
Connection con = null;
//将jar包中的driver实现类加载到JVM中
static {
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
}
//封装交通工具创建细节
public PreparedStatement createStatement(String sql){
try{
ps = getCon().prepareStatement(sql);
}catch(SQLException e){
e.printStackTrace();
}
return ps;
}
//ps与con的销毁细节,insert,update,delete
public void close(){
if(ps!=null){
try{
ps.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//select ps,con,rs
public void close(ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
close();
}
}
4.在web文件夹下,WEB-INF创建lib文件夹,存放mysql提供JDBC实现jar包
5.添加方便的add方法
package com.bjpowernode.dao;
import com.bjpowernode.entity.Users;
import com.bjpowernode.util.JdbcUtil;
import javax.servlet.http.PushBuilder;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Userdao {
private JdbcUtil util = new JdbcUtil();
public int add(Users user){
String sql = " insert into users(userName,password,sex,email)"+" values (?,?,?,?)";
PreparedStatement ps = util.createStatement(sql);
int result = 0;
try {
ps.setString(1,user.getUserName());
ps.setString(2,user.getPassword());
ps.setString(3,user.getSex());
ps.setString(4,user.getEmail());
result = ps.executeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
util.close();
}
return result;
}
}
6.重写doGet()方法
- 6.1.继承Servlet类,此时本实现例:
public class UserAddServlet extend HttpServlet
- 继承的是HttpServlet,又因为HttpServlet继承了Servlet,所以UserAddServlet也间接继承了Servlet。
之所以这样,是因为HttpServlet才有doGet(),doPost()等方法,才可以重写这些方法。 - 6.2.Tomcat
-
1. Tocmat负责销毁【请求对象】和【响应对象】
-
2. Tomcat负责将Http响应协议包推送到发起请求的浏览器上
-
3. 浏览器根据响应头content-type指定编译器对响应体二进制内容编辑
-
4. 浏览器将编辑后结果在窗口中展示给用户【结束】
package com.bjpowernode.controller;
import com.bjpowernode.entity.Users;
import com.bjpowernode.dao.Userdao;
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 java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "UserAddServ")
public class UserAddServlet extend HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName,password,sex,email;
Userdao userdao = new Userdao();
Users user = null;
int result = 0;
PrintWriter out = null;
1.调用【请求对象】读取【请求头】参数信息,得到用户的信息
userName = request.getParameter("userName");
password = request.getParameter("password");
sex = request.getParameter("sex");
email = request.getParameter("email");
2.调用【UserDao】将用户信息填充到INSERT命令并借助JDBC规范发送到数据库服务器
user = new Users(null, userName, password, sex, email);
result =userdao.add(user);
3.【调用响应对象】将【处理结果】以二进制形式写入到响应体
response.setContentType("text/html;charset=utf-8");
out = response.getWriter();
if(result ==1){
out.print("<font style='color:red;font-size:40'>用户信息注册成功</font>");
}
else{
out.print("<font style='color:red;font-size:40'>用户信息注册失败</font>");
}
}
}
7.在web文件夹下,新建user_Add.html文件
- .网页效果图:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<center>
<form action="/myWeb/user/add" method="get">
<table>
<tr>
<td>用户姓名</td>
<td> <input type="text" name="userName"/> </td>
</tr>
<tr>
<td>用户密码</td>
<td> <input type="password" name="password"/> </td>
</tr>
<tr>
<td>用户sex</td>
<td> <input type="radio" name="sex" value="男"/>男
<input type="radio" name="sex" value="女"/>女
</td>
</tr>
<tr>
<td>用户email</td>
<td> <input type="text" name="email"/> </td>
</tr>
<tr>
<td> <input type="submit" name="用户注册"/> </td>
<td> <input type="reset"/> </td>
</tr>
</table>
</form>
</center>
</body>
</html>
7.1.注意
<form action="/myWeb/user/add" method="get">
路径是:myWeb/user/add,方法是:get。(即:调用doGet()方法)
在web.xml注册时,要把路径搞对。
8.将Servlet接口实现类,类路径地址交给Tomcat
- 在web.xml注册时:
路径:/user/add,要与上边user_Add.html对应好
<url-pattern>/user/add</url-pattern>
<!-将Servlet接口实现类,类路径地址交给Tomcat-->
<servlet>
<servlet-name>UserAddServ</servlet-name> <!--声明1个变量,存储servlet接口实现类类路径-->
<servlet-class>com.bjpowernode.controller.UserAddServlet</servlet-class><!--声明servlet接口实现类类路径-->
</servlet>
<!-- Tomcat String mm = "com.bjpowernode.controller.UserAddServlet"-->
<!-为了降低用户访问Servlet接口实现类难度,需要设置简短请求别名-->
<servlet-mapping>
<servlet-name>UserAddServ</servlet-name>
<url-pattern>/user/add</url-pattern> <!--设置简短请求别名,别名在书写时必须以"/"为开头-->
</servlet-mapping>
9.配置IDEA
-
9.1.配置Tomcat
-
9.2.配置mysql,JDBC
-
9.3.当出现no artifacts的warnings时,配置artifacts
或参考网址:
添加链接描述
-
9.4.配置Tomcat启停按钮
3.实验验证
3.1.点击【Tomcat启停】按钮
- 输入网址
- 输入注册信息
3.2.显示成功
3.3.去数据库验证
成功!!!