准备工作:

1.在WebContent  WEB-INF   lib下添加c3p0-0.9.5.2.jar     mchange-common-java-0.2.11.jar   ojdbc6.jar

2.java Resources中的src平级的添加c3p0-config.xml

Java Resources

src

三个包

com.hanqi.dao       数据库有关

BankCard.java实体类    属性 getter setter toString 有参构造 无参构造

BankCardDAO.java   功能类  数据库增删改查

DBHelper.java      单例的数据库工具类  返回数据连接   连接池

com.hanqi.service

BankCardService.java  业务逻辑类

com.hanqi.web      

CheckLoginServlet.java  

MyFilter.java        过滤器

WebContent

Login.jsp 登录界面

Main.jsp 主页面

Login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <form action="CheckLoginServlet" method="POST"> 卡号:<input type="text" name="cardid" value=""><br>
密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body>
</html>

CheckLoginServlet.java

package com.hanqi.web;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import com.hanqi.dao.BankCard;
import com.hanqi.service.BankCardService; /**
* Servlet implementation class CheckLoginServlet
*/
public class CheckLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public CheckLoginServlet() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 接收参数
String cardid = request.getParameter("cardid");
String password = request.getParameter("password"); // 对get,post同时有效
//cardid = new String(cardid.getBytes("ISO-8859-1"), "UTF-8"); // 检查参数
if (cardid == null || password == null
|| cardid.trim().equals("")
|| password.trim().equals(""))
{
response.getWriter().println("请正确登录"); response.setHeader("refresh", "3;url=Login.jsp");
}
else
{
// 验证参数
// 调用Service层
BankCard bc = new BankCardService().checkLogin(cardid, password); if (bc != null)
{
// 创建session
HttpSession hs = request.getSession(); hs.setAttribute("bankcard", bc); // 跳转
response.sendRedirect("Main.jsp");
}
else
{
response.getWriter().println("卡号或密码错误" + " cardid = " + cardid); response.setHeader("refresh", "3;url=Login.jsp");
}
} } /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

BankCard.java

package com.hanqi.dao;

import java.util.Date;

// 实体类
public class BankCard { private String cardID;
private String userID;
private String userName;
private String password;
private double balance;
private String state;
private Date createTime;
public String getCardID() {
return cardID;
}
public void setCardID(String cardID) {
this.cardID = cardID;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
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;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public BankCard(String userID, String userName, String password) {
super();
this.userID = userID;
this.userName = userName;
this.password = password;
}
public BankCard() {
super();
}
@Override
public String toString() {
return "BankCard [cardID=" + cardID + ", userID=" + userID + ", userName=" + userName + ", password=" + password
+ ", balance=" + balance + ", state=" + state + ", createTime=" + createTime + "]";
} }

BankCardDAO.java

package com.hanqi.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; // 数据库操作类
public class BankCardDAO { // 查
// 单条查询
public BankCard getBankCard(String cardid)
{
BankCard rtn = null; // 查询
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null; try {
conn = DBHelper.getDBHelper().getConnection(); String sql = "select * from t_bankcard where card_id = ?"; ps = conn.prepareStatement(sql); ps.setString(, cardid); rs = ps.executeQuery(); if (rs.next())
{
rtn = new BankCard(); rtn.setCardID(cardid);
rtn.setBalance(rs.getDouble("Balance"));
rtn.setCreateTime(rs.getDate("create_time"));
rtn.setPassword(rs.getString("password"));
rtn.setState(rs.getString("state"));
rtn.setUserID(rs.getString("user_id"));
rtn.setUserName(rs.getString("user_name"));
} } catch (SQLException e) {
e.printStackTrace();
}
finally { try {
rs.close();
} catch (SQLException e2) {
} try {
ps.close();
} catch (SQLException e1) {
} try {
conn.close();
} catch (SQLException e) {
} } return rtn;
} // 增 // 改 // 删 }

DBHelper.java

package com.hanqi.dao;

import java.sql.Connection;
import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; // 单例模式的数据库工具类
// 返回数据库连接
public class DBHelper { // 1 隐藏默认构造方法
private DBHelper()
{ } // 2 静态实例
private static DBHelper dh; // 3 返回实例的静态方法
public static DBHelper getDBHelper()
{
if (dh == null)
{
dh = new DBHelper();
} return dh;
} private ComboPooledDataSource cpds = new ComboPooledDataSource("helloc3p0"); // 返回连接的方法
public Connection getConnection() throws SQLException
{
return cpds.getConnection();
} }

MyFilter.java

package com.hanqi.web;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; /**
* Servlet Filter implementation class MyFilter
*/
public class MyFilter implements Filter { /**
* Default constructor.
*/
public MyFilter() {
// TODO Auto-generated constructor stub
} /**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
} /**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 设置编码
request.setCharacterEncoding("UTF-8"); response.setContentType("text/html");
response.setCharacterEncoding("UTF-8"); chain.doFilter(request, response);
} /**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
} }

BankCardService.java

package com.hanqi.service;

import com.hanqi.dao.BankCard;
import com.hanqi.dao.BankCardDAO; // 业务逻辑类
public class BankCardService { // 验证登录方法
public BankCard checkLogin(String cardid, String password)
{
BankCard rtn = null; // 得到卡信息
BankCard bc = new BankCardDAO().getBankCard(cardid); if (bc != null)
{
// 验证数据有效性
if (bc.getState().equals("")
&& bc.getPassword().equals(password))
{
rtn = bc;
}
} return rtn;
} }

Main.jsp

<%@page import="com.hanqi.dao.BankCard"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> 主页面
<br>
<% Object obj = session.getAttribute("bankcard"); if (obj == null)
{
out.print("会话超时或未登录"); response.setHeader("refresh", "3;url=Login.jsp");
}
else
{
BankCard bc = (BankCard)obj; out.print("欢迎登录!" + bc.getUserName());
} %> </body>
</html>

javaSE web开发 登录思路代码的更多相关文章

  1. [Web开发] 在HTML代码里面如何判断IE版本

    在上一篇blog里面提到IE有不同的显示模式以及如何用Javascript 来动态判定. Web开发者可以根据不同显示模式导入不同的内容.这篇blog 主要讲如何让静态HTML代码根据不同IE版本显示 ...

  2. 4_4.springboot之Web开发登录和拦截器

    1.登录处理 1).禁用模板引擎的缓存 # 禁用缓存 spring.thymeleaf.cache=false 2).页面修改完用ctrl+f9:重新编译: LoginController @Cont ...

  3. asp.net web 开发登录相关操作的控件LoginName、LoginStatus和LoginView控件使用详解

    http://book.51cto.com/art/200909/154039.htm http://book.51cto.com/art/200909/154041.htm ASP.NET提供了一套 ...

  4. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  5. 转: 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    from: https://github.com/RubyLouvre/agate/issues/8 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以 ...

  6. 在做java 的web开发,为什么要使用框架

    现在做项目都会使用框架,现在很常见的框架就是SSH(Struts+SpringMVC+spring+hibernate),SSM(Struts/springMVC+Spring+Hibernate), ...

  7. SpringBoot Web开发(5) 开发页面国际化+登录拦截

    SpringBoot Web开发(5) 开发页面国际化+登录拦截 一.页面国际化 页面国际化目的:根据浏览器语言设置的信息对页面信息进行切换,或者用户点击链接自行对页面语言信息进行切换. **效果演示 ...

  8. Web开发技术---简单的登录验证

    制作一个APP或系统最基础的是登录界面,下面通过一个简单的登录注册界面的程序,来熟练掌握Web开发的技术. 一.知识点: 1.在网页界面获取用户的输入信息 2.标签的基本应用 3.用户输入结果的错误提 ...

  9. 基于gin的golang web开发:实现用户登录

    前文分别介绍过了Resty和gin-jwt两个包,Resty是一个HTTP和REST客户端,gin-jwt是一个实现了JWT的Gin中间件.本文将使用这两个包来实现一个简单的用户登录功能. 环境准备 ...

随机推荐

  1. 设计模式之状态模式IFORNOIF(二十二)

    今天大风大雨, 但心情还行, 继续撸DOTA 状态模式(state pattern)定义 当一个对象的内在状态改变时允许改变其行为, 这个对象看起来像是改变了其类 这在我们开发的业务中太常见了, 角色 ...

  2. HTML5 Web存储 页面间进行传值

    在实际使用过程中,经常会遇到需要在页面间进行传值的情况,最初设想一定需要后端才能进行数据的存储和读取,或者在本地使用一个cookie进行保存,直到了解到HTML5 Web存储 使用HTML5的新特性可 ...

  3. iView定制主题报错问题的解决方法

    按照iView官网来是这样的: 1. 在main.js当前目录下新建themes文件夹,里面新建一个叫blue.less的文件 2. 在mian.js里面引入blue.less文件 3. blue.l ...

  4. 【javascript】javascript设计模式之工厂模式

    1.要解决的问题 2.如何实现 3.与构造函数的区别 4.总结 1.要解决的问题 工厂模式通常用于重复创建相似对象,提供动态创建对象的接口. 2.工厂模式最为设计模式中构造模式之一,通常在类或类的静态 ...

  5. JavaScript中map函数和filter的简单举例

    JavaScript的数组迭代器函数map和filter,可以遍历数组时产生新的数组,和python的map函数很类似 1> filter是满足条件的留下,是对原数组的过滤:2> map则 ...

  6. c# webservice中访问http和https的wsdl,生成的配置节点的不同之处

    http: https:

  7. [转]实现Hive数据同步更新的shell脚本

    引言: 上一篇文章<Sqoop1.4.4 实现将 Oracle10g 中的增量数据导入 Hive0.13.1 ,并更新Hive中的主表>http://www.linuxidc.com/Li ...

  8. SSH 无法启动的原因分析及解决方法

    简介 Secure Shell(缩写为 SSH),由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为一项创建在应用层和传输层基础上的安全协议,为计算机上的 S ...

  9. 辉光的UIView

    辉光的UIView 辉光UIView使用了一个UIView的一个category,名为UIView+Glow,请自行到github上查找. 源码如下: // // RootViewController ...

  10. 申请MVP奖励时的小Tips

    大家新年好,今天MSPrecious为大家带来一些申请MVP奖励时的小Tips.   本文分为三个部分 MVP是什么 如何申请MVP 申请MVP需要注意的事项 MVP是什么? 我想,点进来看这篇文章的 ...