Servlet实现用户登录页面(通过数据库验证)
2017-11-10 21:09
846 查看
时间:2017年11月10日 21:08:51
最近学习了Servlet,为了巩固一下知识,用它来实现一个用户登录页面。
=========================================================================
实现原理:
1.用户通过login.html页面进行表单提交。
2.通过Servlet获取用户提交的表单,使用DBUtils技术获取数据库中的数据并进行校验
3.向页面输出校验结果
实现过程:
1.使用IDEA创建一个Web项目并配置好web.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.liweijian.login.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> </web-app><url-pattern>用于表单提交的虚拟地址
2. 创建继承于HttpServlet的类
LoginServlet 如下:
public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
}
3.导入DBUtils所需要的jar包并加入项目中
c3p0-0.9.1.2.jar
commons-dbutils-1.4.jar
mysql-connector-java-5.0.4-bin.jar
4.使用DBUtils工具类(此类需要自行提取封装)
package com.liweijian.utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class DataSourceUtils { private static DataSource dataSource = new ComboPooledDataSource(); private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>(); // 直接可以获取一个连接池 public static DataSource getDataSource() { return dataSource; } // 获取连接对象 public static Connection getConnection() throws SQLException { Connection con = tl.get(); if (con == null) { con = dataSource.getConnection(); tl.set(con); } return con; } // 开启事务 public static void startTransaction() throws SQLException { Connection con = getConnection(); if (con != null) { con.setAutoCommit(false); } } // 事务回滚 public static void rollback() throws SQLException { Connection con = getConnection(); if (con != null) { con.rollback(); } } // 提交并且 关闭资源及从ThreadLocall中释放 public static void commitAndRelease() throws SQLException { Connection con = getConnection(); if (con != null) { con.commit(); // 事务提交 con.close();// 关闭资源 tl.remove();// 从线程绑定中移除 } } // 关闭资源方法 public static void closeConnection() throws SQLException { Connection con = getConnection(); if (con != null) { con.close(); } } public static void closeStatement(Statement st) throws SQLException { if (st != null) { st.close(); } } public static void closeResultSet(ResultSet rs) throws SQLException { if (rs != null) { rs.close(); } } }
5. 配置c3p0-config.xml,此xml文件中定义了数据库的登录名和密码、数据库注册驱动以及需要连接的数据库名称
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="user">root</property> <property name="password">qq352642663</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///web13</property> </default-config> </c3p0-config>
6.在doGet或者doPost方法中实现校验操作。
public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.获得用户的用户名和密码 String username = request.getParameter("username"); String password = request.getParameter("password"); User user; //2.从数据库判断用户名和密码 QueryRunner queryRunner = new QueryRunner(DataSourceUtils.getDataSource()); String sql = "select * from User where username = ? and password = ?"; try { user = queryRunner.query(sql, new BeanHandler<User>(User.class), username, password); //3.输出验证结果 if (user!= null){ response.getWriter().write(user.toString()); }else { response.getWriter().write("sorry, your username or password is wrong!"); } } catch (SQLException e) { e.printStackTrace(); } } }
在代码中使用query进行数据库操作时,需要创建与数据库字段所对应的实体类,即User,该类中包含相应的属性,且必须提供getter和setter
代码如下:
package com.liweijian.domain; /** * @Author:Liweijian * @Description: 实体类 -- bean * @Date:Create in 20:45 2017/11/10 0010 */ public class User { private int id; private String username; private String password; private String emain; public void setId(int id) { this.id = id; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public void setEmain(String emain) { this.emain = emain; } public int getId() { return id; } public String getUsername() { return username; } public String getPassword() { return password; } public String getEmain() { return emain; } @Override public String toString() { return getUsername() + "," + "welcome"; } }
7. 页面代码如下:
<!DOCTYPE html> <htmllang="en"> <head> <meta charset="UTF-8"> <title>用户登录</title> </head> <body> <form action="/login" method="post"> 用户名:<input type="text" name="username"> 密码:<input type="password" name="password"> <input type="submit" value="login"> </form> </body> </html>
8. 运行tomcat服务器后 打开页面网址如下:http://localhost:8080/login.html
9. 当点击login按钮之后,如果数据库中存在该用户,则返回
否则向页面输出
相关文章推荐
- ASP.NET jQuery 食谱11 (通过使用jQuery validation插件简单实现用户登录页面验证功能)
- ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
- ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
- ASP.NET jQuery 食谱12 (通过使用jQuery validation插件简单实现用户注册页面验证功能)
- 通过Servlet实现用户登录
- 实现session登陆时间的验证,验证用户登录页面的一个监听器
- servlet用户登录网站(数据库验证)sqlserver
- 创建并部署一个Servlet,要求在实现用户登录功能,当用户名和密码正确时跳转到欢迎页面,否则提示出错信息
- JSP作业4 - 使用JSP+JavaBean+Servlet实现用户登录注册页面
- Servlet实现用户的登录注册+sqlite数据库验证
- 使用Servlet过滤器实现用户登录验证
- 页面加载后检查用户登录状态,通过ajax实现
- servlet学习笔记4——用户登录网站(数据库验证)
- Servlet课程0425(四) Servlet实现简单用户登录验证
- Servlet页面登录的数据库验证程序(二)
- servlet学习笔记3——用户登录网站(通过session验证登陆用户)
- 实现session登陆时间的验证,验证用户登录页面的一个监听器
- ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
- Servlet页面登录的数据库验证程序(一)
- 通过配置http拦截器,来进行ajax请求验证用户登录的页面跳转