用户登入功能的实现(html + tomcat + mysql)
第一导入 jar包(放入到web-inf的文件夹下) 和html
游戏 玩 第二写个jdbc操控数据库的一个类 package cn.itcast.web.UserDao;
import cn.itcast.web.jdbc.ConnectionPool;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.jws.soap.SOAPBinding;
import javax.sql.DataSource;
import java.util.List;
public class UserDao {
/**
* jdbc功能实现类
* @param user
* @return
*/
JdbcTemplate jdbcTemplate = new JdbcTemplate(ConnectionPool.getDataSource());
public User Login( User user ){
String sql ="select * from ss where usernme = ? and password = ?";
User user1 = jdbcTemplate.queryForObject(sql ,new BeanPropertyRowMapper<User>(User.class),
user.getUsernme() ,user.getPassword());
return user1;
}
}
这个是Spring 提供 jbdc配套的工具类
package cn.itcast.web.jdbc;
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.*;
/**
-
单例模式-饿汉设计模式
-
@author peanut
*/
public class ConnectionPool {private static DruidDataSource ds = null;
/**
- 禁止外部创建对象
*/
private ConnectionPool() {
}
;
//加载时创建
static {
//创建一个数据库连接池
ds = new DruidDataSource();
//设置数据库连接驱动
ds.setUrl(“jdbc:mysql://localhost:3306/text1?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false”);
//设置数据库用户名
ds.setUsername(“root”);
//设置数据库密码
ds.setPassword(“1234”);
//初始化数据库连接数,开始连接数为100条
ds.setInitialSize(100);
//设置空闲时数据库最小连接数,当目前没有人使用connection连接时,连接池也会有50个待命连接
ds.setMinIdle(50);
//设置最大等待时间1分钟,当所有的connection连接都被使用时,在等待获取连接期间最多等待一分钟就会抛出异常
ds.setMaxWait(1000 * 60);
//连接池最大连接数,连接池最大连接200个connection
ds.setMaxActive(200);
}
/**- 返回一个连接池方法 目的 是让template连接到数据原
*/
public static DruidDataSource getDataSource(){
- 禁止外部创建对象
return ds;
}
/**
* 获取一个connection连接对象
*
* @return
*/
public static Connection getConnection() {
synchronized (ConnectionPool.class) {
if (ds != null) {
try {
return ds.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return null;
}
}
/**
* 关闭连接
*
* @param rs
* @param st
* @param conn
* @return
*/
public static boolean close(ResultSet rs, Statement st, Connection conn , PreparedStatement prepa ) {
synchronized (ConnectionPool.class) {
try {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (conn != null) {
conn.close();
}
if( prepa != null){
prepa.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
return false;
}
}
return true;
}
}
三, 写个实体类(用来封装 用户输入的数据 )
package cn.itcast.web.UserDao;
public class User {
private String usernme ;
private String password;
public String getUsernme() {
return usernme;
}
public void setUsernme(String usernme) {
this.usernme = usernme;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"usernme='" + usernme + '\'' +
", password='" + password + '\'' +
'}';
}
}
四 ,Demo继承httpservlet 的类(来进行数据逻辑判断)
package cn.itcast.web.request;
import cn.itcast.web.UserDao.User;
import cn.itcast.web.UserDao.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("/Demo4")
public class Demo4 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req ,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String parameter = req.getParameter("usernme");
String password = req.getParameter("possword");
// System.out.println(parameter);
// System.out.println(password);
User user = new User();
user.setUsernme(parameter);
user.setPassword(password);
UserDao userDao = new UserDao();
User login = userDao.Login(user);
if(login == null){
System.out.println("登入失败");
// 进行跳转
req.getRequestDispatcher("/SucceessServlet").forward(req, resp);
}else{
// 进行跳转
req.getRequestDispatcher("/FailServlet").forward(req, resp);
//保存数据
req.setAttribute("hers", user);
System.out.println("登入成功");
}
}
}
第五 使用跳转和共享资源来进行登入失败或是登入成功的返回页面
登入失败
package cn.itcast.web.servlet;
import cn.itcast.web.UserDao.User;
import cn.itcast.web.UserDao.UserDao;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
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;
import java.util.List;
@WebServlet(“/FailServlet”)
public class FailServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获得编码
resp.setContentType("text/html;charaset=utf-8");
resp.getWriter().write("登入失败");
}
}
登入成功
package cn.itcast.web.servlet;
import cn.itcast.web.UserDao.User;
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(“/SucceessServlet”)
public class SucceessServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取req域中的User对象
User user = (User)req.getAttribute("hers");
//设置编码
resp.setContentType("text/html;charaset=utf-8");
resp.getWriter().write("登入成功"+user.getUsernme()+"欢迎你");
}
}