创建javaweb项目
用maven创建项目
设定为web,有报错警告什么的就直接按照提示解决
添加local tomcat
变成这个样子
第一次要先启动tomcat服务,然后才能运行代码,修改代码后需要更新否则还是服务用的还是之前的缓存。
新建一个文件夹,然后对该文件夹右键,选择mark directory as --> source root ,然后就像java这个文件一样变蓝,在该文件夹下,可以创建包。
要写jsp的话,要导入这三个jar包
数据库连接要把jar放在WEB-INF目录下(的lib下)
mysql8.0 导出sql
代码
在数据库访问公共类中写了操作数据库的几个步骤,即加载驱动,创建连接,操作数据库,关闭数据库,提高了代码的复用性。通过prepareStatement 对象执行动态sql语句,查找输入用户名的密码。若查找为空,则用户名错误,若查找密码与输入密码不同则密码错误,弹窗提示错误类型并跳转回登录界面,若用户名和密码正确跳转到欢迎界面。注册:在login界面点击注册按钮跳转到singup界面填写注册信息,注册由表单提交到adduser界面,通过prepareStatement 对象执行数据库插入操作,完成注册。
jsp文件不能放在WEB-INF文件夹下,否则服务访问不了
设计数据库访问公共类DbUtil
package tools;
import java.sql.*;
public class DbUtil {
//声明连接数据库的信息
private static final String DRIVER_PATH = "com.mysql.cj.jdbc.Driver"; //驱动路径
private static final String URL = "jdbc:mysql://localhost:3306/test3?serverTimezone=UTC";
private static final String USER="root";
private static final String PASSWORD="qaz,wsx,123";
//声明JDBC相关对象
protected static Statement s=null;
protected static ResultSet rs=null;
protected static Connection coon=null;
/**
* 创建数据库连接
* @return coon
*/
public static synchronized Connection getConnection() {
try{
Class.forName(DRIVER_PATH).newInstance();
coon=DriverManager.getConnection(URL,USER,PASSWORD);
}
catch (Exception e){
e.printStackTrace();
}
if (coon != null){
System.out.println("数据库连接成功");
}else {
System.out.println("数据库连接失败");}
return coon;
}
/**
* 执行sql的插入,删除,更新语句
* @param sql SQL语句,字符串类型
* @return 执行结果,int类型
*/
public static int executeUpdate(String sql){
int result=0;
try{
s=getConnection().createStatement();
result=s.executeUpdate(sql);
}
catch(Exception e){
e.printStackTrace();
}
return result;
}
/**
* 执行select语句
* @param sql SQL语句,字符串类型
* @return 结果集,ResultSet
*/
public static ResultSet executeQuery(String sql){
try{
s=getConnection().createStatement();
rs=s.executeQuery(sql);
}
catch (Exception e){
e.printStackTrace();
}
return rs;
}
/**
* 执行动态sql语句
* @param sql SQL语句,字符串类型
* @return prepareStatement对象
*/
public static PreparedStatement executePreparedStatement(String sql){
PreparedStatement ps=null;
try{
ps=getConnection().prepareStatement(sql);
}
catch(Exception e){
e.printStackTrace();
}
return ps;
}
/**
* 关闭数据库连接对象
*/
public static void close(){
try{
if(rs!=null){
rs.close();
}
if(s!=null){
s.close();
}
if(coon!=null){
coon.close();
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<form action="testCheck.jsp" method="get">
<table align="center">
<tr>
<td align="right">用户:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td align="right">密码:</td>
<td> <input type="password" name="password"></td>
</tr>
<tr>
<td ><input type="submit" value="登录">
<td ><input type="button" class="button" onclick="window.location.href='singup.jsp'" value="注册" >
</tr>
</table>
</form>
</body>
</html>
singup.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>signup</title>
</head>
<body>
<form action="adduser.jsp" method="get">
<table align="center">
<tr>
<td align="right">用户名:</td>
<td><input type="text" name="setUsername"></td>
</tr>
<tr>
<td align="right">设置密码:</td>
<td> <input type="password" name="setPassword"></td>
</tr>
<tr>
<td ><input type="submit" value="注册">
</tr>
</table>
</form>
</body>
</html>
addusert.jsp
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="tools.DbUtil" %>
<%@ page import="java.sql.*" %><%--
Created by IntelliJ IDEA.
User: 11759
Date: 2020/11/7
Time: 22:25
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>adduser</title>
</head>
<body>
<%
//设置请求报文的字符编码为 utf-8
request.setCharacterEncoding("utf-8");
//获取表单收入域的值
String setUsername=request.getParameter("setUsername");
String setPassword=request.getParameter("setPassword");
//编写动态sql语句
String sql_adduser="INSERT INTO users VALUES(?,?)";
PreparedStatement ps= DbUtil.executePreparedStatement(sql_adduser);
int result=0;
try {
ps.setString(1,setUsername);
ps.setString(2,setPassword);
result=ps.executeUpdate();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
if(result>0){
out.print("<script language='javascript'>alert('注册成功!');window.location.href='login.jsp';</script>");
}
else{
out.print("<script language='javascript'>alert('注册失败');</script>");
}
%>
</body>
</html>
testcheck.jsp
<%@ page import="java.sql.PreparedStatement,java.sql.*,tools.DbUtil" %><%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>check</title>
</head>
<body>
<%
//设置请求报文的字符编码为 utf-8
request.setCharacterEncoding("utf-8");
//获取表单收入域的值
String username=request.getParameter("username");
String password=request.getParameter("password");
//编写动态sql语句
String sql="SELECT password FROM users WHERE username=?";
PreparedStatement ps=DbUtil.executePreparedStatement(sql);
ResultSet rs=null;
String p=null;
try {
ps.setString(1,username); //为动态sql语句赋值为输入的用户名
rs=ps.executeQuery();//查询得到密码结果集
while(rs.next()){
p=rs.getString("password");//查询数据库得到用户密码
}
rs.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
}
if(p==null){
//显示未注册
out.print("<script language='javascript'>alert('UserName Wrong!!');window.location.href='login.jsp';</script>");
}
else if(p.equals(password)){
//进入欢迎界面
session.setAttribute("username", username);
request.getRequestDispatcher("greet.jsp").forward(request, response);
}
else{
//密码错误
out.print("<script language='javascript'>alert('Password Wrong!!');window.location.href='login.jsp';</script>");
//response.sendRedirect("Login.jsp");
}
%>
</body>
</html>