java 记录用户_JavaWeb学习记录(六)——用户登录功能

使用JDBC、spring框架、servlet实现一个简单的用户登录功能。

一、mySql数据库

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for user

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(40) DEFAULT NULL,

`pass` varchar(15) DEFAULT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `name` (`name`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

二、连接数据库(jdbc+spring)

(1)c3p0-config.xml配置文件:

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/animal

root

root

100

20

10

5

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/animal

root

root

100

20

10

5

(2)工具类:

package blank.util;

import java.sql.Connection;

import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DBConn {

private static ComboPooledDataSource cpds=new ComboPooledDataSource("oa");

private DBConn(){}

public static DataSource getDataSource(){

return cpds;

}

public static Connection getConn() throws SQLException{

return cpds.getConnection();

}

public static void release(Connection conn){

if(conn!=null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

conn=null;

}

}

}

三、创建对应实体

blank.domain包中建立User.java

package blank.domain;

public class User {

private Integer id;

private String name;

private String pass;

public User() {

super();

// TODO Auto-generated constructor stub

}

public User(Integer id, String name, String pass) {

super();

this.id = id;

this.name = name;

this.pass = pass;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPass() {

return pass;

}

public void setPass(String pass) {

this.pass = pass;

}

@Override

public String toString() {

return "User [id=" + id + ", name=" + name + ", pass=" + pass + "]";

}

}

四、数据库操作接口

package blank.dao;

import blank.domain.User;

public interface UserDao {

User getUser(String name, String pass);

}

五、数据库操作的具体方法实现

package blank.dao.impl;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.RowMapper;

import blank.dao.UserDao;

import blank.domain.User;

import blank.util.DBConn;

public class UserDaoImpl implements UserDao{

private JdbcTemplate jdbcTemplate=new JdbcTemplate(DBConn.getDataSource());

@Override

public User getUser(String name, String pass) {

String sql="select id , name, pass from user where name=? and pass=?";

List users=jdbcTemplate.query(sql, new Object[]{name,pass}, new RowMapper(){

@Override

public User mapRow(ResultSet rs, int num) throws SQLException {

User u=new User();

u.setId(rs.getInt("id"));

u.setName(rs.getString("name"));

u.setPass(rs.getString("pass"));

return u;

}});

User user=null;

if(users!=null&&users.size()>0){

user=users.get(0);

}

return user;

}

}

说明:此处查询时不可使用单个个体查询的方式,否则当用户名不存在时会报错!

六、登录的jsp界面

(1)login.jsp:

${user}

用户名:
密码:

(2)sc.jsp:

欢迎登录

七、servlet控制层

package blank.servlet;

import java.io.IOException;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import blank.dao.PetDao;

import blank.dao.UserDao;

import blank.dao.impl.PetDaoImpl;

import blank.dao.impl.UserDaoImpl;

import blank.domain.Pet;

import blank.domain.User;

public class LoginServlet extends HttpServlet {

private UserDao userDao=new UserDaoImpl();

private PetDao petDao=new PetDaoImpl();

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String name=request.getParameter("name");

String pass=request.getParameter("pass");

User user=userDao.getUser(name, pass);

if(user!=null){

request.setAttribute("user", user);

List pets=petDao.getObjects();

request.setAttribute("pets", pets);

request.getRequestDispatcher("/sc.jsp").forward(request, response);

}else{

request.setAttribute("user", "用户名或密码错误");

request.getRequestDispatcher("/login.jsp").forward(request, response);

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

八、结果展示

进入页面显示如下:

fb9L19fXp6emJe5wNgBbQ6vj4eDQabfTep6PR6Pj4uO83SoQWAJkWABFaAGRaAERoAZBpARChBUCmBUCEFgCZFgARWgBkWgBEaAGQaQEQoQVApgVAhBYAmRYAEVoAZFoARGgBkGkBEKEFQKYFQIQWAJkWABFaAGRaAERoAZBpARChBUCmBUCEFgCZFgARWgBkWgBEaAGQaQEQoQVApgVAhBYAmRYAEVoAZP8HQ69u8hs5aQIAAAAASUVORK5CYII=

输入正确的用户名和密码后跳转至另一页面,显示如下:

K28x9mB3kGnzz7Ha1VlUA57UGgPCu1BoT0otAeF9qDQHhTag0J7UGgPCu1BoT0otAeF9qDQHhTag0J7UGgPCu1BoT0otOcDXOW0LwTq+XEAAAAASUVORK5CYII=

输入错误的用户名或密码后留在登录页面不跳转,结果如下:

tAEAAAAASUVORK5CYII=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值