完整文件目录如下:
-
主页面的编写(.jsp文件)
<html>
<head>
<title>淘宝网</title>
</head>
<body>
<h1>欢迎来到主页面!</h1>
<a href="Login.jsp">去登陆</a><br>
<a href="register.jsp">去注册</a>
</body>
</html>
给客户两个选项(登陆/注册)---完成页面如下
1.登陆页面编写
<html>
<head>
<title>登陆页面</title>
</head>
<body>
<h2>欢迎学习WEB!</h2>
<form action="login" method="post">
账号:<input type="text" name="username" value=""> <br>
密码:<input type="password" name="password" value=""> <br>
<input type="submit" value="登录">
</form>
</body>
</html>
1.2注册页面
<html>
<head>
<title>注册页面</title>
</head>
<body>
<h1>注册页面</h1>
<form action="register" method="post">
账号:<input type="text" name="username" value=""> <br>
密码:<input type="password" name="password" value=""> <br>
再次输入密码:<input type="password" name="password" value=""> <br>
手机号:<input type="text" name="phone" value=""> <br>
地址:<input type="text" name="address" value=""> <br>
<input type="submit" value="注册">
<a href="Login.jsp">已有账号?点击登录</a>
</form>
</body>
</html>
1.3项目页面
<html>
<head>
<title>主页</title>
</head>
<body>
<h1>欢迎项目主页</h1>
<h2>主页信息展示</h2>
<table>
<thead>
<tr>
<th>商品编号</th>
<th>商品名称</th>
<th>商品价格</th>
<th>商品介绍</th>
</tr>
</thead>
<tbody id="list">
<%
// 获取session
HttpSession session1 = request.getSession();
// 从session中取出数据
List<Goods> goodsList = (List<Goods>) session1.getAttribute("goodsList");
// 遍历集合中的元素
for (Goods goods : goodsList) {
%>
<!--使用java脚本获取集合中对象的元素,放入html标签中-->
<tr>
<td><%=goods.getGid()%></td>
<td><%=goods.getGname()%></td>
<td><%=goods.getPrice()%></td>
<td><%=goods.getMark()%></td>
</tr>
<%
}
%>
</tbody>
</table>
</body>
</html>
1.4错误页面
<html>
<head>
<title>错误页</title>
</head>
<body>
<h1>密码输入错误!!!</h1>
<a href="index.jsp">回到主页</a> <br>
<a href="Login.jsp">回到登录页</a>
</body>
</html>
2.登陆页面编写
<html>
<head>
<title>登陆页面</title>
</head>
<body>
<h1>登陆页面</h1>
<h2>欢迎学习WEB!</h2>
<form action="login" method="post">
账号:<input type="text" name="username" value=""> <br>
密码:<input type="password" name="password" value=""> <br>
<input type="submit" value="登录">
<a href="register.jsp">没有账号?点击注册</a>
</form>
</body>
</html>
2.1实体类
package com.man.dao;
public class User {
private Integer uid;
private String username;
private String password;
private String phone;
private String address;
public User() {
}
public User(Integer uid, String username, String password, String phone, String address) {
this.uid = uid;
this.username = username;
this.password = password;
this.phone = phone;
this.address = address;
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
", phone='" + phone + '\'' +
", address='" + address + '\'' +
'}';
}
}
goods类
package com.man.bean;
public class Goods {
private Integer gid;
private String gname;
private Double price;
private String mark;
public Integer getGid() {
return gid;
}
public void setGid(Integer gid) {
this.gid = gid;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getMark() {
return mark;
}
public void setMark(String mark) {
this.mark = mark;
}
@Override
public String toString() {
return "Goods{" +
"gid=" + gid +
", gname='" + gname + '\'' +
", price=" + price +
", mark='" + mark + '\'' +
'}';
}
}
2.2编写登录java代码
package com.man.servlet;
import com.man.services.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Login-doGet...");
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Login-doPost...");
// 1.设置请求和响应的编码格式,以及响应的格式
request.setCharacterEncoding("utf-8"); // 设置获取数据的格式
response.setCharacterEncoding("utf-8");
response.setContentType("text/html:charset=UTF-8");//以什么样的格式(文本/网页)响应
// 2.获取请求的参数
String username = request.getParameter("username"); //根据表单的name属性获取用户输入的账号密码
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
// 3.执行业务处理
Connection connection = null;
PreparedStatement pstm = null;
ResultSet rs = null;
User login = null;
try{
// 1.加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.获取数据库连接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC","root","root");
// 3.定义登陆的sql语句
String sql = "select * from t_user where username=? and password=?" ;
// 4.获取预处理对象
pstm = connection.prepareStatement(sql);
// 5.传参
pstm.setObject(1,username);
pstm.setObject(2,password);
// 6.执行查询
rs = pstm.executeQuery();
// 7.解析结果集
if (rs.next()){
login = new User();
// 从结果集中获取数据,封装到实体类中
login.setUid(rs.getInt("uid"));
login.setUsername(rs.getString("username"));
login.setPassword(rs.getString("password"));
login.setPhone(rs.getString("phone"));
login.setAddress(rs.getString("address"));
}
} catch (Exception e){
e.printStackTrace();
} finally {
// 8.关闭资源
try{
if (rs!=null){
rs.close();
}
if (pstm!=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
// 4.判断登陆信息是否为空
if (login!=null){
// 登陆成功,跳转到主页
response.sendRedirect("zhuye.jsp");
}else {
// 登陆失败,跳转到错误页
response.sendRedirect("error.jsp");
}
}
}
userDao类
package com.man.dao;
import com.man.bean.User;
import com.man.util.JDBCUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDao {
Connection con = null;
ResultSet rs = null;
PreparedStatement pstm = null;
User login = null;
int row = 0;
public User login(String username, String password) {
try{
// 1.获取数据库连接
con = JDBCUtil.getCon();
// 2.定义登陆的sql语句
String sql = "select * from t_user where username=? and password=?" ;
// 3.获取预处理对象
pstm = con.prepareStatement(sql);
// 4.传参
pstm.setObject(1,username);
pstm.setObject(2,password);
// 5.执行查询
rs = pstm.executeQuery();
// 6.解析结果集
if (rs.next()){
login = new User();
// 从结果集中获取数据,封装到实体类中
login.setUid(rs.getInt("uid"));
login.setUsername(rs.getString("username"));
login.setPassword(rs.getString("password"));
login.setPhone(rs.getString("phone"));
login.setAddress(rs.getString("address"));
}
} catch (Exception e){
e.printStackTrace();
}
return login;
}
public int register(User user) {
try{
// 1.获取数据库连接
con = JDBCUtil.getCon();
// 2.定义注册的新增sql语句
String sql = "insert into t_user(username,password,phone,address) values(?,?,?,?)" ;
// 3.获取预处理对象
pstm = con.prepareStatement(sql);
// 4.传参
pstm.setObject(1,user.getUsername());
pstm.setObject(2,user.getPassword());
pstm.setObject(3,user.getPhone());
pstm.setObject(4,user.getAddress());
// 5.执行更新(增删改)
row = pstm.executeUpdate();
}catch (Exception e){
e.printStackTrace();
} finally {
JDBCUtil.close(con,pstm);
}
return row;
}
}
login类代码
package com.man.servlet;
import com.man.bean.User;
import com.man.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;
@WebServlet("/login")
public class Login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Login-doGet...");
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.设置请求和响应的编码格式,以及响应的格式
request.setCharacterEncoding("utf-8"); // 设置获取数据的格式
response.setCharacterEncoding("utf-8");
response.setContentType("text/html:charset=UTF-8");//以什么样的格式(文本/网页)响应
// 2.获取请求的参数
String username = request.getParameter("username"); //根据表单的name属性获取用户输入的账号密码
String password = request.getParameter("password");
System.out.println(username);
System.out.println(password);
// 3.执行业务处理
UserDao userDao = new UserDao();
User login = userDao.login(username, password);
// 4.判断登陆信息是否为空
if (login!=null){
// 登陆成功,当前servlet业务处理完毕---后续操作由别人完成---请求别的地址
request.getRequestDispatcher("selectAllGoods").forward(request,response);
}else {
// 登陆失败,跳转到错误页
response.sendRedirect("error.jsp");
}
}
}
SelectAllGoods 类
package com.man.servlet;
import com.man.bean.Goods;
import com.man.dao.GoodsDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;
@WebServlet("/selectAllGoods")
public class SelectAllGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("SelectAllGoods-doGet...");
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.执行查询业务
// 2.查询所有商品信息
GoodsDao goodsDao = new GoodsDao();
List<Goods> goodsList = goodsDao.selectAllGoods();
System.out.println(goodsList);
// 3.把数据传递到前端页面
// 3.1通过request获取session对象,该对象可以向前端传输数据的容器
HttpSession session = request.getSession();
// 4.向session中存入商品信息集合
session.setAttribute("goodsList",goodsList);
// 4.登录成功,跳转到登录页
response.sendRedirect("zhuye.jsp");
}
}
2.3工具类文件
package com.man.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class JDBCUtil {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
private static String user = "root";
private static String psw = "root";
int row = 0;
static Connection con = null;
public static Connection getCon(){
try{
// 1.加载数据库驱动
Class.forName(driver);
// 2.获取数据库连接
con = DriverManager.getConnection(url, user, psw);
} catch (Exception e){
e.printStackTrace();
}
return con;
}
public static void close(ResultSet rs,Connection con,PreparedStatement pstm){
// 关闭资源
try{
if (rs!=null){
rs.close();
}
if (pstm!=null){
pstm.close();
}
if (con!=null){
con.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
public static void close(Connection con,PreparedStatement pstm){
// 关闭资源
try{
if (pstm!=null){
pstm.close();
}
if (con!=null){
con.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
输入正确信息,数据库比对过后进入主页面
反之则进入错误页
3.注册页面
<html>
<head>
<title>注册页面</title>
</head>
<body>
<h2>欢迎学习WEB!</h2>
<form action="zhuce" method="post">
账号:<input type="text" name="username" value=""> <br>
密码:<input type="password" name="password" value=""> <br>
再次输入密码:<input type="password" name="password" value=""> <br>
手机号:<input type="text" name="phone" value=""> <br>
地址:<input type="text" name="address" value=""> <br>
<input type="submit" value="注册">
</form>
</body>
</html>
3.1编写注册java代码
package com.man.servlet;
import com.man.dao.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class Zhuce extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Zhuce-doGet...");
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Zhuce-doPost...");
// 1.设置请求和响应的编码格式,以及响应的格式
request.setCharacterEncoding("utf-8"); // 设置获取数据的格式
response.setCharacterEncoding("utf-8");
response.setContentType("text/html:charset=UTF-8");//以什么样的格式(文本/网页)响应
// 2.获取请求的参数
String username = request.getParameter("username"); //根据表单的name属性获取用户输入的账号密码
String password = request.getParameter("password");
String phone = request.getParameter("phone");
String address = request.getParameter("address");
System.out.println(username);
System.out.println(password);
System.out.println(phone);
System.out.println(address);
// 3.执行业务处理
Connection connection = null;
PreparedStatement pstm = null;
User zhuce = null;
int a = 0;
try{
// 1.加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2.获取数据库连接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC","root","root");
// 3.定义登陆的sql语句
String sql = "insert into t_user(username,password,phone,address) values(?,?,?,?)" ;
// 4.获取预处理对象
pstm = connection.prepareStatement(sql);
// 5.传参
pstm.setObject(1,username);
pstm.setObject(2,password);
pstm.setObject(3,phone);
pstm.setObject(4,address);
a = pstm.executeUpdate();
zhuce = new User();
zhuce.setUsername(username);
zhuce.setPassword(password);
zhuce.setPhone(phone);
zhuce.setAddress(address);
// 6.处理结果
if (a > 0) {
System.out.println("新增成功");
} else {
System.out.println("新增失败");
}
} catch (Exception e){
e.printStackTrace();
} finally {
// 8.关闭资源
try{
if (pstm!=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
// 4.判断登陆信息是否为空
if (a > 0){
// 登陆成功,跳转到主页
response.sendRedirect("zhuye.jsp");
}else {
// 登陆失败,跳转到错误页
response.sendRedirect("error.jsp");
}
}
}
// 执行业务处理部分用到的代码与登录业务代码在同一 .java 文件中
@Override
public int register(User user) {
try{
// 1.获取数据库连接
con = JDBCUtil.getCon();
// 2.定义注册的新增sql语句
String sql = "insert into t_user(username,password,phone,address) values(?,?,?,?)" ;
// 3.获取预处理对象
pstm = con.prepareStatement(sql);
// 4.传参
pstm.setObject(1,user.getUsername());
pstm.setObject(2,user.getPassword());
pstm.setObject(3,user.getPhone());
pstm.setObject(4,user.getAddress());
// 5.执行更新(增删改)
row = pstm.executeUpdate();
}catch (Exception e){
e.printStackTrace();
} finally {
JDBCUtil.close(con,pstm);
}
return row;
}
输入信息点击 注册,自动跳转登录页
将刚刚注册的账号密码输入,登录进入项目主页
4.完成servlet映射关系配置
4.1映射方法一
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 配置servlet类 -->
<servlet>
<!-- 起别名 -->
<servlet-name>login</servlet-name>
<servlet-class>com.man.servlet.Login</servlet-class>
<!-- servlet类所在的位置:类的全类名就是 包名.类名 -->
</servlet>
<!-- Servlet类的映射:Servlet用来处理哪个请求 -->
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>zhuce</servlet-name>
<servlet-class>com.man.servlet.Zhuce</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>zhuce</servlet-name>
<url-pattern>/zhuce</url-pattern>
</servlet-mapping>
</web-app>
4.2映射方法二
将@WebServlet("/想跳转的页面")写在代码最外层,即可完成映射
5.MYSQL代码部分
#判断存在即删除数据库
drop database if exists mydb;
#创建数据库
create database mydb;
#使用数据库
use mydb;
#创建表
create table t_user
(
uid int primary key auto_increment,
username varchar(20),
password varchar(20),
phone varchar(11),
address varchar(50)
);
insert into t_user(username,password,phone,address) values('张三','666','18965423548','南阳');
insert into t_user(username,password,phone,address) values('李四','333','18754263548','许昌');
insert into t_user(username,password,phone,address) values('小美','123','18565234759','信阳');
select * from t_user where username=? and password=?
select * from t_user;
create table t_goods
(
gid int primary key auto_increment,
gname varchar(20),
price double,
mark varchar(100)
);
insert into t_goods(gname,price,mark) values('泡面',4.5,'够香够辣就是这个味!');
insert into t_goods(gname,price,mark) values('火腿',8.5,'肉质细腻Q弹!');
insert into t_goods(gname,price,mark) values('雪碧',3.5,'清爽冰凉随心爽!');
select * from t_goods;