实例内容

  •   创建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. matlab的figure窗口命名为中文

    figure('NumberTitle', 'off', 'Name', '我的窗口名字');

  2. apache日志

    <VirtualHost *:80> ServerAdmin chinasir.xyz@gmail.com DocumentRoot /var/www/html/baidu ServerN ...

  3. vue 城市搜索组件

    1.实现大致是如下效果 2.搜索组件的页面结构 <template>    <div>     <div class="search">     ...

  4. JavaScript你必须掌握的8大知识点

    一:JavaScript思维导图之<基本dom操作> 二.JavaScript思维导图之<变量>的学习 三.  JavaScript思维导图之<函数基础>  四.J ...

  5. java基础 final 修饰成员变量 只能赋值一次问题

    final int a; public Fu(){ a=1; }

  6. xcode怎样分析检测内存泄露(iOS)

    虽然iOS 5.0版本之后加入了ARC机制,由于相互引用关系比较复杂时,内存泄露还是可能存在.所以了解原理很重要. 这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露, ...

  7. 在centos7云服务器上搭建Apache服务器并访问到你的网站

    使用X-shell ssh安全连接到云服务器 https://mail.qq.com/cgi-bin/mail_spam?action=check_link&url=https://www.n ...

  8. 洛谷P1437 [HNOI2004]敲砖块(dp)

    题目背景 无 题目描述 在一个凹槽中放置了 n 层砖块.最上面的一层有n 块砖,从上到下每层依次减少一块砖.每块砖 都有一个分值,敲掉这块砖就能得到相应的分值,如下图所示. 14 15 4 3 23 ...

  9. Python--基础2

    class Ball: #def setname(self,name): def __init__(self,name): self.name = name def __kick(self): #__ ...

  10. PHP审计(一)

    一.php中常见的危险函数和审计要点 危险函数(功能过于强大)    参数是否外部可控,有没有正确的过滤. PHP获取外界传入参数是通过下面几个全局函数的形式,所以审计参数传入经常要和下面几个变量打交 ...