您的位置:首页 > 数据库

Web连接数据库登录注册功能实现(学习笔记)

2020-04-02 07:51 1041 查看

package com.test.dao;

import com.test.domain.User;

public interface UserDao {
//接口或得UserServicelmpl得到的user数据
public void addUser(User user) throws Exception;
//接口 返回User
public User addlogin(User user)throws Exception;

}
package com.test.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;

import com.sun.xml.internal.ws.api.pipe.NextAction;
import com.test.dao.UserDao;
import com.test.domain.User;
import com.test.utils.DBUtils;
//接口
public class UserDaoImpl implements UserDao {
//实现方法,将从用户获得user,然后再连接数据库实现封装好的数据库方法
public void addUser(User user) throws Exception {
Connection conn=null;
PreparedStatement ps=null;
try {
System.out.println(“我来到数据库门外了”);
System.out.println("-----"+user.getUsername()+"-------");
//连接数据库,
conn=DBUtils.getConnection();
//将sql语句使用注入的方式传到数据库
ps=conn.prepareStatement("insert into users " +
“(username,password,email,birthday)values (?,?,?,?)”);
//user的用户名
ps.setString(1,user.getUsername());
//user的密码
ps.setString(2, user.getPassword());
//user的邮件
ps.setString(3, user.getEmail());
//用户的生日
SimpleDateFormat sdf=new SimpleDateFormat(“yyy-MM-dd”);
String date=sdf.format(user.getBirthday());
ps.setString(4, date);
int i=ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭数据连接
DBUtils.closeAll(null, ps, conn);
}

}
//实现接口的方法
public User addlogin(User user) throws Exception {
//连接数据库
Connection conn=null;
//传送sql
PreparedStatement ps=null;
//返回
ResultSet rs=null;
User u=null;
try {
//加载驱动
conn=DBUtils.getConnection();
//将sql语句传送给数据库,and前后之间有空格
ps=conn.prepareStatement("select *from users where username=? and password=?");
//注入user.getUsername,getpassword
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
//执行命令
rs=ps.executeQuery();
//如果存在
if(rs.next()){
System.out.println("登录成功!");
//将数据取到的值放入u中
u=new User();
u.setId(rs.getInt(1));
u.setUsername(rs.getString(2));
u.setPassword(rs.getString(3));
u.setEmail(rs.getString(4));
u.setBirthday(rs.getDate(5));
}else{
System.out.println("账号密码错误,请重新登录");
}

} catch (Exception e) {

e.printStackTrace();
}finally{
//关闭连接
DBUtils.closeAll(rs,ps, conn);
}

return u;

}

}
package com.test.domain;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable{
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
private String username;
private String email;
private String password;
private Date birthday;

}
package com.test.service;

import com.test.domain.User;

public interface UserService {
//接口获取到RegServler得到的user数据
public void register(User user) throws Exception;
//接口获得user用户user
public User relogin(User user);
}
package com.test.service.impl;

import com.test.dao.UserDao;
import com.test.dao.impl.UserDaoImpl;
import com.test.domain.User;
import com.test.service.UserService;
//引用接口
public class UserServiceImpl implements UserService {

//引用UserService后得到从用户传回来的user数据,
UserDao userDao=new UserDaoImpl();

public void register(User user) throws Exception {
//将user传到user中
userDao.addUser(user);

}
//实现接口的方法
public User relogin(User user) {
User u=null;
try {
//拿到user的数据,返回u
u=userDao.addlogin(user);
} catch (Exception e) {

e.printStackTrace();
}
return u;
}

}
package com.test.utils;

import java.sql.*;
import java.util.ResourceBundle;

public class DBUtils {
private static String driverClass;
private static String url;
private static String username;
private static String password;

static{
//从配置文件dbinfo.properties获得 driverClass,url,username,password
ResourceBundle rb=ResourceBundle.getBundle("dbinfo");
driverClass = rb.getString("driverClass");
url=rb.getString("url");
username=rb.getString("username");
password=rb.getString("password");
try{
//加载驱动
Class.forName(driverClass);
}catch(ClassNotFoundException e){
e.printStackTrace();

}

}
public static Connection getConnection() throws Exception{
//创建连接
return DriverManager.getConnection(url,username,password);
}
public static void closeAll(ResultSet rs,PreparedStatement stmt,Connection conn) {
try {
if(rs!=null){rs.close();}
if(stmt!=null){stmt.close();}
if(conn!=null){conn.close();}

} catch (SQLException e) {

e.printStackTrace();
}

}

}
package com.test.web.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import com.test.domain.User;
import com.test.service.UserService;
import com.test.service.impl.UserServiceImpl;

public class LoginServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
User u=new User();
try {
//使用阿帕奇公司的提供的方法获取表单数据
BeanUtils.populate(u, request.getParameterMap());
//处理业务
UserService user=new UserServiceImpl();

u=user.relogin(u);
} catch (Exception e) {

e.printStackTrace();
}
//分发转向,将获得u的数据的转发index.jsp
request.setAttribute("u", u);
request.getRequestDispatcher("/index.jsp").forward(request, response);

}

}
package com.test.web.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import java.text.SimpleDateFormat;

import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;

import com.test.domain.User;
import com.test.service.UserService;
import com.test.service.impl.UserServiceImpl;

public class RegServler extends HttpServlet {
private static SimpleDateFormat sdf=new SimpleDateFormat(“yyy-MM-dd”);

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

System.out.println("--------我来到这里乐-----");
//请求客户端使用utf-8解析
request.setCharacterEncoding("UTF-8");
//响应回去
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//获取表单数据
System.out.println("--------我来到这里乐-----");
User user=new User();
try {

// ConvertUtils.register(new Converter() {
//
// public Object convert(Class type, Object value) {
// if(value instanceof String){
// String date =(String) value;
// SimpleDateFormat sdf=new SimpleDateFormat(“yyy-MM-dd”);
// Date date1=null;
// try {
// date1= sdf.parse(date);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// return value;
// }
// }, Date.class);
//转换Date类型
ConvertUtils.register(new DateLocaleConverter(), Date.class);
//将表达中的数据存到uesr中
BeanUtils.populate(user, request.getParameterMap());
// System.out.println(request.getParameter(“username”));
// user.setUsername(request.getParameter(“username”));
// user.setUsername(request.getParameter(“username”));
// user.setPassword(request.getParameter(“password”));
// user.setEmail(request.getParameter(“email”));
// Date date=sdf.parse(request.getParameter(“birthday”));
// user.setBirthday(date);
//

} catch (Exception e) {
e.printStackTrace();
}
//调用业务逻辑

//
UserService us=new UserServiceImpl();
try {
//调用register,将user传入
us.register(user);
} catch (Exception e) {
e.printStackTrace();
}
//分发转向
response.getWriter().write("注册成功!一秒跳转登录页面……");
response.setHeader("refresh","1;url="+request.getContextPath()+"/index.jsp" );

}

}
//配置文件dbinfo.properties
driverClass =com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://localhost:1433;DatabaseName=DBLogin
username=sa
password=123

//index.jsp 主页面
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"😕/"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
登录 注册 欢迎你:${u.username} 登录
注销

//https://blog.csdn.net/ssq_qss/article/details/reg.jsp 登录的页面
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here 用户名

https://blog.csdn.net/ssq_qss/article/details/login.jsp

<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here 用名
密码
  • 点赞
  • 收藏
  • 分享
  • 文章举报
是南山呀. 发布了11 篇原创文章 · 获赞 0 · 访问量 177 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐