servlet实现简单的登录功能
1.登录页面 Login.html
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>登录</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div >
<h4 >
请输入您的登录信息
</h4>
<div ></div>
<form action="login.do" method="post">
<table>
<tr>
<td><label for="loginname">用户名:</label></td>
<td><input type="text" id="loginname" name="loginname" value="" style="width: 220px"></td>
</tr>
<tr>
<td><label for="password">密码:</label></td>
<td><input type="password" id="password" name="password" value="" style="width: 220px"></td>
</tr>
</table>
<div></div>
<label >
<input type="checkbox" />
<span>记住我的登陆信息</span>
</label>
<div></div>
<div></div>
<button>
<span>登录</span>
</button>
</form>
</div>
</body>
</html>
2.LoginServlet.java
package com.yanCheng.service.impl; import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.yanCheng.controller.DataProvider;
import com.yanCheng.dao.*; public class LoginServelt extends HttpServlet { private final String ERROR_VIEW = "Error.view"; protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
String loginname = request.getParameter("loginname");
String password = request.getParameter("password");
if(checkLogin(loginname,password)){
//登录成功页面
response.sendRedirect("views/Home/Index.html");
}else{
//也可以像成功页面那样写
response.sendRedirect(ERROR_VIEW);
} } //读取数据库,验证登录
private boolean checkLogin(String loginname, String password) {
if (loginname != null && password != null) {
return !DataProvider.isResultSetNull("select * from yancheng.lcb_user_information "
+ "where LOGINNAME = '" + loginname + "' and PASSWORD = '" + password + "'");
}
return false;
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
} 3.建立数据库模型,主要实现数据库连接建立、执行查询、释放连接、判断等操作。
DataProvider.java package com.yanCheng.controllerimport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger; public class DataProvider { //指定驱动名
protected static String driver = "com.mysql.jdbc.Driver";
//指定访问的URL
protected static String url = "jdbc:mysql://localhost:3306/yancheng";
//MySQL用户名
protected static String user = "root";
//MySQL密码
protected static String password = "123456";
//初始Connection
protected static Connection connection = null; //建立连接
public static Connection getConnection() {
try {
Class.forName(driver);
connection = DriverManager.getConnection(url, user, password);
return connection;
} catch (ClassNotFoundException | SQLException e) {
return null;
}
} //获取结果集
public static ResultSet getResultSet(String sql) {
Statement statement;
ResultSet resultSet = null;
Connection conn = getConnection();
if (conn != null) {
System.out.println("连接成功!");
try {
statement = conn.createStatement();
resultSet = statement.executeQuery(sql);
} catch (Exception e) {
}
return resultSet;
} else {
return null;
}
} //判断结果集是否为空
public static boolean isResultSetNull(String sql) {
int count = 0;
ResultSet resultSet = getResultSet(sql);
try {
while (resultSet.next()) {
count += 1;
}
} catch (SQLException ex) {
Logger.getLogger(DataProvider.class.getName()).log(Level.SEVERE, null, ex);
}
if (count == 0) {
return true;
} else {
return false;
}
} //是否执行
public static boolean execute(String sql) {
boolean success;
Statement statement;
Connection conn = getConnection();
if (conn != null) {
try {
statement = conn.createStatement();
success = statement.execute(sql);
} catch (Exception e) {
success = false;
}
} else {
success = false;
}
return success;
} //释放连接
public static void releaseConnection() {
try {
if (connection != null) {
connection.close();
}
} catch (Exception e) {
}
}
} 4.登录成功页面
index.html
写一个登录成功的html就好
5.d登录失败页面
error.java
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; /**
*
* @author Barudisshu
*/
public class Error extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
/* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<meta charset=\"utf-8\">");
out.println("<title>会员登录成功页面</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>会员 " + request.getParameter("user") + " 你好</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
} 6.web.xml配置
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.yanCheng.service.impl.LoginServelt</servlet-class>
</servlet>
<servlet>
<servlet-name>Failure</servlet-name>
<servlet-class>com.yanCheng.service.impl.Failure</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Failure</servlet-name>
<url-pattern>/failure.view</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>Login.html</welcome-file>
<!--<welcome-file>Index.html</welcome-file>-->
</welcome-file-list>
servlet实现简单的登录功能的更多相关文章
- spring Boot 简单的登录功能,利用了jdbcTemplate.class完成sql语句的执行,无需service层、dao层和.xml文件
1.搭建SpringBoot项目首先我们先在IDEA上创建一个SpringBoot的Web项目(1)file ——> new ——> project——> Spring Initia ...
- IDEA+JSP+Servlet+Tomcat简单的登录示例
1.用IDEA新建Java WEB项目并配置Tomcat 这一部分可以参考之前的一篇随笔 https://www.cnblogs.com/lbhym/p/11496610.html 2.导入Servl ...
- Servlet课程0425(四) Servlet实现简单用户登录验证
Login.java //登录界面 package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class ...
- struts1实现简单的登录功能(附源码)
环境:MyEclipse 14 ...
- jsp&servlet初体验——用户登录功能实现
数据库准备-创建db_login数据库 t_user表 1.创建web工程 2.创建用户model user.java package com.gxy.model; public class U ...
- SpringBoot简单实现登录功能
登陆 开发期间模板引擎页面修改以后,要实时生效 1).禁用模板引擎的缓存 # 禁用缓存 spring.thymeleaf.cache=false 2).页面修改完成以后ctrl+f9:重新编译: 登陆 ...
- Servlet实现简单的登录页面
package emp; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; imp ...
- PHP简单模拟登录功能实例分享
1.curl实现模拟登录的代码,(只是实现服务器与服务器建立会话,其实并没有在客户端与服务器之间建立会话) <?php $cookie_jar = tempnam('./tmp','cookie ...
- express+mysql实现简单的登录功能
登录页面图: node.js文件代码: const express=require("express"); const app=express(); const path=requ ...
随机推荐
- java(10)类的无参方法
一.变量的作用域(有效的使用范围) 1.变量有2种 1.1成员变量(属性) 声明在类的里面,方法的外面 1.2 局部变量 声明在方法里面或for循环结构中 2.调用时的注意事项(初始值不同.作用域不同 ...
- 边框回归(bounding-Box regression)
转自:https://blog.csdn.net/zijin0802034/article/details/77685438 为什么要边框回归? 什么是边框回归? 边框回归怎么做的? 边框回归为什么宽 ...
- SQLserver 数据库高版本无法还原到低版本的数据解决方法
sql server 数据库的版本只支持从上往下兼容.即高版本可以兼容低版本 .低版本不能兼容低版本.通常我们在开发时会用比较高的版本.但是部署到客户那边可能他们的数据库版本会比较低. 我们可以通过导 ...
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(理解)
0 - 背景 R-CNN中检测步骤分成很多步骤,fast-RCNN便基于此进行改进,将region proposals的特征提取融合成共享卷积层问题,但是,fast-RCNN仍然采用了selectiv ...
- 动态代理和CGlib
静态代理:静态代理的类也需要实现接口interface1,还要创建一个实现接口interface1的其他类class1,并且在静态代理类重写的方法中调用class1重写的方法.操作太多冗余.不好 动态 ...
- ES--08
71.内核原理探秘_最后优化写入流程实现海量磁盘文件合并(segment merge,optimize) 课程大纲 每秒一个segment file,文件过多,而且每次search都要搜索所有的seg ...
- 【原创】大数据基础之HDFS(2)HDFS副本数量检查及复制逻辑
HDFS会周期性的检查是否有文件缺少副本,并触发副本复制逻辑使之达到配置的副本数, <property> <name>dfs.replication</name> ...
- prototype、proto、constructor 之间的关系
- <?xml version="1.0" encoding="UTF-8"?> 的作用
version="1.0" 声明用的xml版本是1.0 encoding="UTF-8" 声明用xml传输数据的时候的字符编码,假如文档里面有中文,编码方式不是 ...
- Python编码规范(PEP8)
Introduction 介绍 本文提供的Python代码编码规范基于Python主要发行版本的标准库.Python的C语言实现的C代码规范请查看相应的PEP指南1. 这篇文档以及PEP 257(文档 ...