考古Servlet+JDBC实现简约的登录注册界面
servlet结合jdbcServlet接口GenericServlet抽象类HttpServlet类Servlet创建方式实现Servlet接口继承HttpServlet实现登录注册Servlet接口接口包括五个方法void init(ServletConfig config)ServletConfig getServletConfig()void service(ServletRequest
servlet结合jdbc
效果展示
登录
注册
登陆成功
查询登陆成功

注册成功

Servlet接口
接口包括五个方法
void init(ServletConfig config)ServletConfig getServletConfig()void service(ServletRequest request, ServletResponse response)String getServletInfo()void destroy()
GenericServlet抽象类
实现Servlet、ServletConfig、Serializable接口,需重写service方法。
HttpServlet类
继承GenericServlet基础上的扩展,子类必须重写一个方法。
一般只需重写doGet和doPost方法。
- doGet
- doPost
- doPut
- doDelete
Servlet创建方式
实现Servlet接口
直接继承原生的Servlet,较为麻烦
package com.yma16;
import javax.servlet.*;
import java.io.IOException;
public class MyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("测试1");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
继承HttpServlet
大部分开发人员推荐的创建方式,重写doGet和doPost方法
@WebServlet("/hello")//value urlpattern
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.getWriter().print("测试!");
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
{
doGet( request,response);
}
}
实现登录注册
功能逻辑
传统的分为三层
- Entity(写数据库实体类)
- Dao(数据库表的增删改查)
- Service(调用Dao实现登陆注册)

细化的话还可以多一层requestmaping
cookie传递参数给前端界面

QreryRunner类的方法实现增删改查
query(connection conn,String sql,Object[] params,ResultSetHandler rsh)
执行查询update(connection conn,String sql,Object[] params,ResultSetHandler rsh)
执行插入、更新、删除BeanHandler
将结果的第一行数据封装到对应的JavaBean实例中
配置mysql连接
package com.yma16.batabase;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.DbUtils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class Dbutils {
private static DruidDataSource ds;
private static final ThreadLocal<Connection> THREAD_LOCAL=new ThreadLocal<>();
static{
Properties properties=new Properties();
InputStream inputStream= DbUtils.class.getResourceAsStream("/mysqldatabase.properties");//mysql连接
try{
properties.load(inputStream);
ds=(DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
}catch (IOException e)
{
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection connection=THREAD_LOCAL.get();
try{
if(connection==null)
{
connection=ds.getConnection();
THREAD_LOCAL.set(connection);
}
}catch (SQLException e)
{
e.printStackTrace();
}
return connection;
}
public static void begin(){
Connection connection=null;
try{
connection=getConnection();
connection.setAutoCommit(true);
}catch (SQLException e){
e.printStackTrace();
}
}
public static void commit(){
Connection connection=null;
try{
connection=getConnection();
connection.commit();
}catch (SQLException e)
{
e.printStackTrace();
}
finally {
closeAll(connection,null,null);
}
}
public static void rollback()
{
Connection connection=null;
try
{
connection=getConnection();
connection.rollback();//回滚
}catch (SQLException e)
{
e.printStackTrace();
}finally {
closeAll(connection,null,null);
}
}
public static void closeAll(Connection connection, Statement statement, ResultSet resultset)
{
try{
if(resultset!=null){
resultset.close();
}
if(statement!=null)
{
statement.close();
}
if(connection!=null)
{
connection.close();
THREAD_LOCAL.remove();
}
}catch (SQLException e)
{
e.printStackTrace();
}
}
}
Entity
实体对应数据库表user
package com.yma16.entity;
public class User {
private String username,password;//对应数据库user
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;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
"password='" + password + '\'' +
'}';
}
}
Dao
数据增删改查接口
package com.yma16.dao;
import com.yma16.entity.User;
import java.util.List;
public interface UserDao {//功能接口
public User insert(String username,String password);//添加数据
public User select(String username);//查询
public int delete(String username);//删除数据
public int update(User user);//
public List<User> selectAll();//查找
}
接口实现类
package com.yma16.dao;
import com.yma16.batabase.Dbutils;
import com.yma16.entity.User;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.sql.SQLException;
import java.util.List;
public class UserDaoImpl implements UserDao{//接口实现类
private QueryRunner queryRunner=new QueryRunner();
@Override
public User insert(String username,String password) {
System.out.println("sql插入数据");
try{
// String sql="select username,password from user where username=? and password=?;";
String insertsql="insert into user values(?,?)";
String selectsql="select username,password from user where username=? and password=?";
queryRunner.update(Dbutils.getConnection(),insertsql,username,password);//插入语句实现
System.out.println("loading 插入数据");
User user=queryRunner.query(Dbutils.getConnection(),selectsql,new BeanHandler<User>(User.class),username,password);//查询是否存在
return user;//user
}catch (SQLException e)
{
System.out.println("error");
e.printStackTrace();
}
return null;
}
@Override
public User select(String username) {
System.out.println("sql根据username查询");
try{
String sql="select username,password from user where username=?";
User user=queryRunner.query(Dbutils.getConnection(),sql,new BeanHandler<User>(User.class),username);
return user;//user
}catch (SQLException e)
{
System.out.println("error");
e.printStackTrace();
}
return null;
}
@Override
public int delete(String username) {
System.out.println("sql根据username删除");
try{
User user=queryRunner.query(Dbutils.getConnection(),"delete from user where username=?;",new BeanHandler<User>(User.class),username);
return 1;//删除成功
}catch (SQLException e)
{
e.printStackTrace();
}
return 0;
}
@Override
public int update(User user) {
// 更新数据
return 0;
}
@Override
public List<User> selectAll() {
try{
List<User> users=queryRunner.query(Dbutils.getConnection(),"select * from user",new BeanListHandler<User>(User.class));
return users;
}catch (SQLException e)
{
e.printStackTrace();
}
return null;
}
}
Service
登陆注册接口
package com.yma16.service;
import com.yma16.entity.User;
import java.util.List;
public interface UserService {
public User register(String name,String password);//注册
public User login(String name, String password);//登陆
public List<User> showAllAdmin();//查询
}
接口实现
package com.yma16.service;
import com.yma16.batabase.Dbutils;
import com.yma16.dao.UserDao;
import com.yma16.dao.UserDaoImpl;
import com.yma16.entity.User;
import java.util.List;
public class UserServiceImpl implements UserService{//实现service接口
private UserDao userdao=new UserDaoImpl();//user接口功能
@Override
public User register(String username, String password) {
User result=null;
try{
Dbutils.begin();
User user=userdao.insert(username,password);//插入用户名和密码
if(user!=null){
if(user.getPassword().equals(password))
{
result=user;//查询存在则给result
}
}
Dbutils.commit();
}catch (Exception e)
{
e.printStackTrace();
}
return result;
}
@Override
public User login(String username, String password) {
User result=null;
System.out.println("loading login");
try{
Dbutils.begin();
User user=userdao.select(username);//名字查询
System.out.println(user);//查询的结果
if(user!=null){
if(user.getPassword().equals(password))
{
result=user;//查询存在则给result(对比)
}
}
Dbutils.commit();
}catch (Exception e)
{
e.printStackTrace();
}
return result;
}
@Override
public List<User> showAllAdmin() {
List<User> users=null;
try{
Dbutils.begin();
users=userdao.selectAll();//查询所用user
Dbutils.commit();
}catch (Exception e)
{
Dbutils.rollback();
e.printStackTrace();
}
return users;
}
}
servlet调用service
登陆调用service的login
User user=userService.login(username,password);//调用sql查询
注册调用service的register
User user=userService.register(username,password);//注册
github仓库
代码:我的仓库
更多推荐


所有评论(0)