实例内容

  •   创建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. Python 二进制 八进制 十进制 十六进制

    1.四种进制的表示方式 >>> 0b010 0b二进制 >>> 0x010 0x 十六进制 >>> 0o010 0o 八进制 >>&g ...

  2. 注解@Component,@Controller,@Service,@Repository简单了解

    Spring 自 2.0 版本开始,陆续引入了一些注解用于简化 Spring 的开发.@Repository注解便属于最先引入的一批,它用于将数据访问层 (DAO 层 ) 的类标识为 Spring B ...

  3. JS实现Promise原理

    promise是用来解决Js中的异步问题的,js中所有的异步可从callback → promise → generator + co = async + await 其实所有的都是callback的 ...

  4. 关于js的严格模式

    最近在看你不知道js,补充自己的js基础,加深理解.在读的过程中写点笔记. 严格模式下与非严格模式的区别 . 严格模式是es5新增的,es6是默认为严格模式的!js默认状态下是非严格模式的!   一般 ...

  5. ElasticSearch 集群原理

    节点 一个运行中的EasticSearch 被称为一个节点,而集群是由多个用于拥有相同cluster.name配置的节点组成,它们共同承担数据和负载的压力,当有新的节点加入或移除,集群会重新平均分布所 ...

  6. docker官方仓库下载镜像

    官方仓库镜像地址:https://hub.docker.com/search/ 以下载mysql为例 进入到详情页后我们看到有很多Tags 我们选择5.7.25版本进行下载 # docker pull ...

  7. CentOS7密码忘记解决方法&&GRUB菜单加密

    CentOS7的root密码忘记怎么办 注意:该方法只适用于Linux7版本,可以用cat /redhat-release 查看 这里这里只介绍一种方法 1.启动的时候,在启动界面,相应启动项,内核名 ...

  8. ethereum(以太坊)(二)--合约中属性和行为的访问权限

    pragma solidity ^0.4.0; contract Test{ /* 属性的访问权限 priveta public internal defualt internal interlnal ...

  9. TP5 行为Behavior用法说明

    TP5 行为Behavior用法说明 无论是tp3还是在tp5中,行为都是一个非常重要的概念,关于太多的理论知识,就不多说了,不了解的请查看开发文档:TP5 行为概述 以下,就由代码来一步一步实现行为 ...

  10. 右键git-bash不能使用

    主要:右键git-bash不能使用 右键git-bash不能使用 今日想用git传写代码到仓库,突然发现几天没有却出问题了,右键出现了错误,虽然很快解决了,但还是可以记录下 情形: 右键存在但不能使用 ...