前言
本次课学习了如何通过web来写一个简易的登录注册功能
环境配置
1、IDEA
2、JDK1.8(推荐用此版本)
3、Tomcat 8.5.32
4、Navicat for MySQL
5、MySQL Server
以上内容的安装及破解此处省略,那么接下来进入正题
实验过程
1、创建数据库
打开事先安装好的Navicat for MySQL并新建数据库
在新建的数据库下我们新建user表
之后我们右键设计user表
加入属性
然后在user表内添加数据
2、项目文件及类的创建
以上是本次项目的所有文件和类,在开始说代码之前我们还需要在lib文件夹中添加两个依赖包
分别是jstl 1.2和mysql-connector-java-5.1.47-bin,在下载完成后直接拖入文件夹即可
拖入后我们需要右键点击Add as library来启动依赖包
然后进行以下操作
在右侧页面中点击fix即可自动添加两个包,完成启动
3、JSP部分
主页(index)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>登录页面</h1>
<form action="/login" method="post">
name:<input name="name" type="text">
password:<input name="password" type="password">
<input type="submit" value="login">
</form>
<a href="add.jsp">跳转到注册页面</a>
<a href="search.jsp">跳转到查找页面</a>
</body>
</html>
添加页面(add)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
</head>
<body>
<h1>注册页面</h1>
<form action="/add?method=save" method="post">
name:<input name="name" type="text">
password:<input name="password" type="password">
age:<input name="age" type="text">
<input type="submit" value="注册">
</form>
</body>
</html>
查询页面(search)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查找</title>
</head>
<body>
<form action="/add?method=search" method="post">
<input name="name" placeholder="请输入你要查找的名字">
<input type="submit" value="查找">
</form>
</body>
</html>
4、类的编写
1、数据库的连接(DBUtil)
getConnection内test1是自己创建的数据库的名字
package com.Jver0629.util;
import java.sql.*;
public class DBUtil {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("连接数据库");
//创建连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1?useSSL=false","root","123456");
return connection;
}
public static void closeAll(ResultSet rs, Statement stmt,Connection conn)throws SQLException{
if (rs != null){
rs.close();
}
if (stmt != null){
stmt.close();
}
if (conn != null){
conn.close();
}
}
}
2、配置web文件
在web.xml中添加以下内容
<servlet>
<servlet-name>addServlet</servlet-name>
<servlet-class>com.Jver0629.servlet.AddServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addServlet</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
3、实体类(User)
package com.Jver0629.model;
public class User {
private int id;
private String name;
private String password;
private String age;
//按住alt+insert
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;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", age='" + age + '\'' +
'}';
}
}
4、执行方法(UserDao)
包含查询和添加两个方法
package com.Jver0629.dao;
import com.Jver0629.model.User;
import com.Jver0629.util.DBUtil;
import javax.jws.soap.SOAPBinding;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
public int add(User user) {
Connection connection = null;
PreparedStatement pstmt = null;
int count = 0;
try {
connection = DBUtil.getConnection();
//获得执行sql的statement对象
pstmt = connection.prepareStatement("insert into user (name,password,age) value (?,?,?)");
pstmt.setString(1,user.getName());
pstmt.setString(2,user.getPassword());
pstmt.setString(3,user.getAge());
//执行sql,获得结果
count = pstmt.executeUpdate();
System.out.println("insert操作:"+count);
return count;
}catch (Exception e){
e.printStackTrace();
}finally {
try {
DBUtil.closeAll(null,pstmt,connection);
} catch (SQLException e) {
e.printStackTrace();
}
}
return count;
}
public User selectByName(String name){
ResultSet rs = null;
Connection connection = null;
PreparedStatement pstmt = null;
DBUtil util = new DBUtil();
User user = new User();
try {
connection = util.getConnection();
pstmt = connection.prepareStatement("select * from user where name =?");
pstmt.setString(1,name);
rs = pstmt.executeQuery();
//处理结果集
while (rs.next()) {
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setPassword(rs.getString(3));
user.setAge(rs.getString(4));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
util.closeAll(rs, pstmt, connection);
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
}
5、逻辑层(UserService)
package com.Jver0629.service;
import com.Jver0629.dao.UserDao;
import com.Jver0629.model.User;
import java.sql.SQLException;
public class UserService {
UserDao userDao = new UserDao();
public int add(User user) {
System.out.println("service中add方法被调用");
return userDao.add(user);
}
public User selectByName(String name){
return userDao.selectByName(name);
}
}
6、Servlet(AddServlet、HelloServlet、LoginServlet)
AddServlet
package com.Jver0629.servlet;
import com.Jver0629.model.User;
import com.Jver0629.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class AddServlet extends HttpServlet {
UserService userService = new UserService();
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行了doPost");
String method = req.getParameter("method");
if (method.equals("save")){
insert(req,resp);
}else if(method.equals("search")){
search(req,resp);
}
}
public void insert(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
User user = new User();
String name = req.getParameter("name");
String password = req.getParameter("password");
String age = req.getParameter("age");
user.setName(name);
user.setPassword(password);
user.setAge(age);
System.out.println(user);
int count = userService.add(user);
if (count>0){
resp.sendRedirect("/index.jsp");
}else {
resp.getWriter().write("<h2>failed</h2>");
}
}
public void search(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html;charset=GBK");
resp.setContentType("text/html");
String name = req.getParameter("name");
User user1 = userService.selectByName(name);
if (user1 != null){
resp.getWriter().write("<h1>用户名:"+user1.getName()+"<h1><h1>密码:"+user1.getPassword()+"<h1><h1>年龄:"+user1.getAge());
}else {
resp.getWriter().write("失败!");
}
}
}
添加Tomcat
下载完Tomcat后,回到页面,点击右上角的Add Configuration
进入页面后点击左上角的+
选择Tomcat Server下的Local
进入Deployment
点击下方的fix自动加入war包
将Application context内的地址删除,然后应用即可
运行结果
最后让我们来看一下运行结果
先让我们来看看数据库内的数据
输入数据库内存在的账户密码
接下来跳转到注册页面
输入一条数据库内没有的记录
点击注册后会跳转到主页,数据库会多出一条添加的数据
然后门来到查询页面,输入数据库中的一条数据内容