MySQL部分
一般来说,用户的信息数据都储存在数据库中
#创建数据库
create database 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','信阳');
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,'清爽冰凉随心爽!');
Java部分
在idea中创建有关类
web中写jsp页面,index.jsp是首页布局
<html>
<head>
<title>这是JavaWeb项目</title>
</head>
<body>
<h2>开始学习JavaWeb吧!</h2>
<a href="login.jsp">登录</a>
<a href="zhuce.jsp">注册</a>
</body>
</html>
登陆页面
<html>
<head>
<title>登录</title>
</head>
<body>
<h2>登录</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="zhuce.jsp">没有账号?请注册</a>
</form>
</body>
</html>
注册页面
<html>
<head>
<title>注册</title>
</head>
<body>
<form action="zhuce" method="post">
账号:<input type="text" name="username" value=""><br>
密码:<input type="password" name="password" value=""><br>
电话:<input type="text" name="phone"><br>
地址:<input type="text" name="address">
<input type="submit" value="注册">
<a href="login.jsp">已有帐号?请登录</a>
</form>
</body>
</html>
登陆正确时跳转到zhuye.jsp主页页面
<html>
<head>
<title>登录</title>
</head>
<body>
<h2>登陆成功!</h2>
</body>
</html>
在登陆页面,密码或用户名输入错误时跳转到error.jsp再返回login.jsp登陆页面
<html>
<head>
<title>错误页</title>
</head>
<body>
<h2>出错啦!</h2>
<a href="login.jsp">返回登陆</a>
</body>
</html>
用户实体类代码如下:
package com.shi.bean;
public class User {
private int uid;
private String username;
private String password;
private String phone;
private String address;
public int getUid() {
return uid;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getPhone() {
return phone;
}
public String getAddress() {
return address;
}
public void setUid(int uid) {
this.uid = uid;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setPhone(String phone) {
this.phone = phone;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
", phone='" + phone + '\'' +
", address='" + address + '\'' +
'}';
}
}
工具类JDBCUtil
package com.shi.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";
private static String user="root";
private static String password="root";
private static Connection connection=null;
public static Connection getCon(){
try {
Class.forName(driver);
connection= DriverManager.getConnection(url,user,password);
}catch (Exception e){
e.printStackTrace();
}
return connection;
}
public static void close(ResultSet rs, PreparedStatement pstm,Connection con){
try {
if (rs!=null){
rs.close();
}
if (pstm!=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
public static void zhuce( PreparedStatement pstm,Connection con){
try {
if (pstm!=null){
pstm.close();
}
if (connection!=null){
connection.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
用户接口类
package com.shi.dao;
import com.shi.bean.User;
public interface UserDao {
User login(String username,String password);
int zhuce(User user);
}
功能逻辑类UserDaoImpl.jsp
package com.shi.dao.impl;
import com.shi.bean.User;
import com.shi.dao.UserDao;
import com.shi.util.JDBCUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDaoImpl implements UserDao {
private Connection con=null; //数据库连接对象
private PreparedStatement pstm=null; //预处理对象
private ResultSet rs=null; //结果集对象
private int row=0; //增删改受影响的行数
public User login(String username,String password){
User login=null;
try {
con= JDBCUtil.getCon();
String sql="select * from t_user where username=? and password=?";
pstm= con.prepareStatement(sql);
pstm.setObject(1,username);
pstm.setObject(2,password);
rs= pstm.executeQuery();
if (rs.next()){
login=new User();
int uid=rs.getInt("uid");
login.setUid(uid);
login.setUsername("username");
login.setPassword("password");
login.setPhone("phone");
login.setAddress("address");
}
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.close(rs,pstm,con);
}
return login;
}
public int zhuce(User user){
try {
//1:获取数据库连接
con=JDBCUtil.getCon();
//2.定义sql语句
String sql="insert into t_user(username,password,phone,address)values(?,?,?,?)";
pstm = con.prepareStatement(sql);
pstm.setObject(1, user.getUsername());
pstm.setObject(2, user.getPassword());
pstm.setObject(3, user.getPhone());
pstm.setObject(4, user.getAddress());
row= pstm.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.zhuce(pstm,con);
}
return row;
}
}
逻辑代码
Login逻辑代码
package com.shi.servlet;
import com.shi.bean.User;
import com.shi.dao.impl.UserDaoImpl;
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 req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1:设置请求和响应的编码格式,以及响应代码的格式
req.setCharacterEncoding("utf-8");//设置请求的编码格式为中文
resp.setCharacterEncoding("utf-8");//设置响应代码的格式
resp.setContentType("text/html;charset=UTF-8"); //以什么样的格式(文本/网页)响应
//2:获取请求的参数
String username = req.getParameter("username");
String password = req.getParameter("password");
UserDaoImpl userDao=new UserDaoImpl();
User login=userDao.login(username,password);
if(login!=null){
//登陆成功,跳转到主页
resp.sendRedirect("zhuye.jsp");//指定跳转的页面
}else {
//登陆失败,跳转到错误页
resp.sendRedirect("error.jsp");
}
}
}
Zhuce逻辑代码
package com.shi.servlet;
import com.shi.bean.User;
import com.shi.dao.UserDao;
import com.shi.dao.impl.UserDaoImpl;
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;
//设置当前类用来处理/register的请求
@WebServlet("/zhuce")
public class Zhuce extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.设置编码
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=UTF-8");
//2.获取请求参数
String username=req.getParameter("username");
String password=req.getParameter("password");
String phone=req.getParameter("phone");
String address=req.getParameter("address");
//封装:把上面所有的变量装载到User对象中
User user=new User();
user.setUsername(username);
user.setPassword(password);
user.setPhone(phone);
user.setAddress(address);
//3:执行业务处理---jdbc的操作
UserDao userDao=new UserDaoImpl();
int row=userDao.zhuce(user);
if(row>0){
resp.sendRedirect("login.jsp");//指定跳转的页面
}else {
resp.sendRedirect("error.jsp");
}
}
}
注册后填入要注册信息注册成功
可以查看数据库中的表
这时登录和注册页面就成功啦!