实例内容

  •   创建DAO(Data Access Oject)接口:BaseDAO
  •   创建其实例化类:UserDAO  用于获取数据库struts中的userinfo表中的内容
  •   创建User的Java Bean类,含有username和password,以及其get和set方法
  •   修改Action中的验证用户名机制,将验证通过DAO层与数据库进行通信判别。

实例代码

  BaseDAO:

package UserBlock;

import java.util.ArrayList;
import java.util.Collection; /**
* DAO(Data Access Oject)接口
* Created by Richard on 2017/6/16.
*/
public interface BaseDAO { public boolean insert(String username,String password) throws Exception; public Collection select() throws Exception; public boolean delete(String username) throws Exception; public ArrayList up_select(String username) throws Exception; public boolean update(String username,String password) throws Exception;
}

  UserDAO:

package UserBlock;

import javax.xml.transform.Result;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collection; /**
* Created by Richard on 2017/6/16.
*/
public class UserDao implements BaseDAO {
private String url = "jdbc:mysql://localhost:3306/struts";
private String user = "root";
private String password = "root"; @Override
public boolean insert(String username,String upassword) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String sql = "insert into userinfo(username,password)Values(?,?)";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, username);
pst.setString(2, upassword);
int i = pst.executeUpdate();
if (i >= 1) {
return true;
} else {
return false;
}
} @Override
public Collection select() throws Exception {
ArrayList al = new ArrayList();
Class.forName("com.mysql.jdbc.Driver");
String sql = "select * from userinfo";
Connection conn = DriverManager.getConnection(url, user, password);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
if (rs.next()) {
User Get = new User();
Get.setUsername(rs.getString("username"));
Get.setPassword(rs.getString("password"));
al.add(Get);
}
return al;
} @Override
public boolean delete(String username) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String sql = "delete from userinfo where username=?";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, username);
int i = pst.executeUpdate();
if (i >= 1) {
return true;
} else {
return false;
} } @Override
public ArrayList up_select(String username) throws Exception {
ArrayList al = new ArrayList();
Class.forName("com.mysql.jdbc.Driver");
String sql = "select * from userinfo where username=?";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1,username);
ResultSet rs = pst.executeQuery();
if (rs.next()) {
User Get = new User();
Get.setUsername(rs.getString("username"));
Get.setPassword(rs.getString("password"));
al.add(Get);
}
return al;
} @Override
public boolean update(String username,String upassword) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String sql = "update userinfo set password=? where username=?";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1,upassword);
pst.setString(2,username);
int i = pst.executeUpdate();
if (i >= 1) {
return true;
} else {
return false; }
}
}

  新修改的Action:

package UserBlock;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; import java.util.ArrayList;
import java.util.Map;
import java.util.logging.LogManager; /**
* Created by Richard on 2017/6/16.
* 继承ActionSupport实现一个Action
* 登陆界面通过loginuser.action调用login()方法来处理数据
* login()方法中通过ActionContext调用Session对象,存入输入错误的数据
* 通过addActionMessage()方法向页面输出相关信息
* 注册页面通过reguser.action调用reg()方法来处理数据
*/
public class UserAction extends ActionSupport {
private String INDEX="index";
private String LOGIN="login";
private String REG="register";
private String username;
private String password; public String getCompassword() {
return compassword;
} public void setCompassword(String compassword) {
this.compassword = compassword;
} private String compassword;
private UserDao user; 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 String login(){
try{
user=new UserDao();
ArrayList result=user.up_select(username);
if(result.size()>0){
User aim= (User) result.get(0);
if(aim.getPassword().equals(password)){
/*登陆成功*/
return INDEX;
}else{
ActionContext applicton=ActionContext.getContext();
Map session=applicton.getSession();
int count;
if(session.get("count")==null){
count=0;
}else{
count= (int) session.get("count");
}
if(count>=3){
addActionMessage("错误次数过多");
count=0;
session.put("count",count);
return LOGIN;
}else{
count++;
addActionMessage("您输入的用户名或密码错误"+count);
session.put("count",count);
return LOGIN;
} }
}else{
addActionMessage("该用户不存在,已经跳转到注册页面");
return REG;
}
}catch (Exception e){
addActionError(e.getMessage());
System.out.println(e.getMessage());
e.printStackTrace();
return LOGIN;
}
} public String reg(){
try{
user=new UserDao();
ArrayList result=user.up_select(username);
if(result.size()>0)
{
addActionMessage("该用户已经存在");
return REG;
}
else{
if(user.insert(username,password)){
return INDEX;
}else{
addActionMessage("发生未知错误,请重试!");
return REG;
} }
}catch (Exception e){
addActionError(e.getMessage());
return REG;
}
}
}

项目代码

Git项目源代码,持续更新

Struts2+DAO层实现实例02——搭建DAO基本框架并与Struts2组合的更多相关文章

  1. Struts2+DAO层实现实例01——搭建Struts2基本框架

    实例内容 利用Strust2实现一个登陆+注册功能的登陆系统. 实现基础流程:

  2. Struts2+DAO层实现实例03——添加监听器跟踪用户行为

    实例说明 根据上两次的成品进行二次加工. 加入Listener,监听用户的登陆注销情况. 所用知识说明 采用SessionBindingListener对Session进行监听. 同时,Action中 ...

  3. 搭建DAO层和Service层代码

    第一部分建立实体和映射文件 1 通过数据库生成的实体,此步骤跳过,关于如何查看生成反向工程实体类查看SSH框架搭建教程-反向工程章节 Tmenu和AbstractorTmenu是按照数据库表反向工程形 ...

  4. [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

  5. 基于Mybatis的Dao层的开发

    基于Mybatis的Dao层开发 SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFa ...

  6. mybatis dao 层开发简易版 非整合 spring

    同样老习惯,先上项目结构截图 首先 补充上篇文中缺失的 mysql demo 用的 小脚本 drop database if exists mybatis; CREATE DATABASE `myba ...

  7. 我的 MyBatis 实现的 Dao 层

    学了 Mybatis 之后,发现用 Mybatis 写 Dao层实在是简便多了,主要是在表的映射这块简单了很多.下面是我实现的使用 Mybatis 实现的简单的操作用户表的 Dao 层. 使用 Myb ...

  8. 基于Mybatis的Dao层开发

    转自:https://www.cnblogs.com/rodge-run/p/6528398.html 基于Mybatis的Dao层开发 SqlSessionFactoryBuilder用于创建 Sq ...

  9. Mybatis进阶学习笔记——动态代理方式开发Dao接口、Dao层(推荐第二种)

    1.原始方法开发Dao Dao接口 package cn.sm1234.dao; import java.util.List; import cn.sm1234.domain.Customer; pu ...

随机推荐

  1. 移动端定制软键盘样式 配置input属性的type属性

    1.当你的input输入的数据为链接地址时type属性可改为 type=url 最下面一栏就会出现.com 提高用户体验 2.当你的input输入的数据为email时type属性可改为 type=em ...

  2. 旧文备份:怎样利用好单片机上的存储器资源来实现OD的存储与访问

    我们知道OD(对象字典)是CANopen的核心,所有功能都是围绕它开展的,是协议栈的数据中心,良好的OD实现是协议栈高效稳定运行的基础,而OD的实现最基本的一点就是怎么去保存它.因为OD的内容比较杂, ...

  3. 如何使用MongoDB+Springboot实现分布式ID?

    转载请标明出处: http://blog.csdn.net/forezp/article/details/69056017 本文出自方志朋的博客 一.背景 如何实现分布式id,搜索相关的资料,一般会给 ...

  4. Oracle 将 A 用户下所有表的增删改查 赋予 B 用户

    第一步:创建用户 create user username identified by password; 第二步:给用户赋值接触锁定(仅仅赋予会话权限) grant create session t ...

  5. C++编程经验总结1

    面向对象的精髓: 主函数其实就是对于类的元素和动作的重新组合来进行一项活动. 一个思想概念:程设是清楚的,完美的. 数学是清楚的,是完美的. 物理是有趣的,尤其是量子物理 生物是清楚的,尤其是基因 外 ...

  6. tree树形

    /**  * tree  * @param menuBeans  * @param pid  * @return  */ public JSON  makeTree(List<MenuBean& ...

  7. html5 canvas中CanvasGradient对象用法

    html5 中canvas提供了强大的渲染样式,可以实现一些比较复杂的样式设置,今天学习了CanvasGradient对象可以实现一个颜色的渐变 CanvasGradient对象可以实现两种不同形式的 ...

  8. leetcode笔记(二)94. Binary Tree Inorder Traversal

    题目描述 (原题目链接) Given a binary tree, return the inorder traversal of its nodes' values. For example:Giv ...

  9. VS2013使用自带的数据库 Microsoft SQL Server 2012 Express LocalDB

    注:DeptLocalDB:自己取的数据库实例名称 DeptSharedLocalDB:自己取的实例共享名称np:\\.\pipe\LOCALDB#SH7C6ED5\tsql\query:命名管道名称 ...

  10. sql的使用

    1.自动获取最新订单号 select concat('XJDD',DATE_FORMAT(now(),'%Y%m%d'), LPAD(( FOR )) , max(SUBSTRING(inquiryn ...