基础的Struts2框架连接数据库基本的增删查改
#Struts2框架的搭建
action包
package com.fengjie.action;
import java.util.List;
import com.fengjie.dao.BaseDao;
import com.fengjie.entity.Userss
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.fengjie.entity.Userss;
public class UserssAction extends ActionSupport{
private BaseDao baseDao = new BaseDao();必须get,set方法
private Userss userss = new Userss();必须get,set方法
//查询所有 public String cha() { List<Object> list= baseDao.findAll(new Userss()); ActionContext.getContext().put("list", list); System.out.println("查询成功"); return "a"; } //id查询 public String chaByid() { int id = userss.getId(); Userss a = baseDao.chaByid(id); ActionContext.getContext().put("a", a); System.out.println("查询成功"); return "up"; } //添加 public String Add() { int row = baseDao.add(userss); System.out.println(userss); System.out.println(row); if(row>0) { System.out.println("增加成功"); return "a"; }else { return INPUT; } } //删除 public String Delete() { int row = baseDao.delete(userss); if(row>0) { System.out.println("删除成功"); return cha(); }else { return INPUT; } } //修改 public String Update() { int row = baseDao.update(userss); System.out.println(row); if(row>0) { System.out.println("修改成功"); return cha(); }else { System.out.println("修改失败"); return cha(); } } public BaseDao getBaseDao() { return baseDao; } public void setBaseDao(BaseDao baseDao) { this.baseDao = baseDao; } public Userss getUserss() { return userss; } public void setUserss(Userss userss) { this.userss = userss; }
}
entity包
package com.fengjie.entity;
public class Userss {
private Integer id;
private String name;
private String password;
public Userss() {} public Userss(String name, String password) { this.name = name; this.password = password; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "Userss [id=" + id + ", name=" + name + ", password=" + password + "]"; }
}
dao包
因为是通用dao方法,所以数据库表名要和实体类一模一样
package com.fengjie.dao;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.fengjie.entity.Userss;
public class BaseDao {
public static Connection getConn() {连接数据库方法
Connection conn = null;
try {
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/a”, “root”, “111”);数据库名和数据库密码要用自己的
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void closeAll(ResultSet rs,PreparedStatement pstmt,Connection conn) {关闭数据库方法
try {
if (rs!=null) {
rs.close();
}
if (pstmt!=null) {
pstmt.close();
}
if (conn!=null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
//添加 public int add(Object object) { Connection conn = BaseDao.getConn(); PreparedStatement pstmt = null; int row = 0; try { Class c = object.getClass(); Field[] fields = c.getDeclaredFields(); Field.setAccessible(fields,true); StringBuffer sBufferuffer = new StringBuffer("insert into "); sBufferuffer.append(c.getSimpleName() +"("); for (int i = 1; i < fields.length; i++) { sBufferuffer.append(fields[i].getName()); if (i<fields.length-1) { sBufferuffer.append(","); } } sBufferuffer.append(") values("); for (int i = 1; i < fields.length; i++) { sBufferuffer.append("?"); if (i<fields.length-1) { sBufferuffer.append(","); } } sBufferuffer.append(")"); System.out.println(sBufferuffer); pstmt = conn.prepareStatement(sBufferuffer.toString()); for (int i = 1; i < fields.length; i++) { pstmt.setObject(i, fields[i].get(object)); } row = pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally { BaseDao.closeAll(null, pstmt, conn); } return row; } //查询 public List<Object> findAll(Object object){ Connection conn = BaseDao.getConn(); PreparedStatement pstmt = null; ResultSet rs = null; List<Object> list = new ArrayList<Object>(); try { Class c = object.getClass(); Field[] fields = c.getDeclaredFields(); Field.setAccessible(fields, true); String sql = "select * from " +c.getSimpleName(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while(rs.next()) { Object object2 = c.newInstance(); for (int i = 0; i < fields.length; i++) { fields[i].set(object2,rs.getObject(fields[i].getName())); } list.add(object2); } } catch (Exception e) { e.printStackTrace(); }finally { BaseDao.closeAll(rs, pstmt, conn); } return list; } //修改 public int update(Object object) { Connection conn = BaseDao.getConn(); PreparedStatement pstmt = null; int row = 0; try { Class c = object.getClass(); Field[] fields = c.getDeclaredFields(); Field.setAccessible(fields, true); StringBuffer sBuffer=new StringBuffer("update "+c.getSimpleName() +" set "); for (int i = 1; i < fields.length; i++) { sBuffer.append(fields[i].getName()+"=?"); if(i<fields.length-1) { sBuffer.append(","); } } sBuffer.append(" where "+fields[0].getName()+" =?"); pstmt = conn.prepareStatement(sBuffer.toString()); for (int i = 1; i < fields.length; i++) { pstmt.setObject(i, fields[i].get(object)); } pstmt.setObject(fields.length, fields[0].get(object)); row = pstmt.executeUpdate(); System.out.println(sBuffer); } catch (Exception e) { e.printStackTrace(); }finally { BaseDao.closeAll(null, pstmt, conn); } return row; } //删除 public int delete(Object object) { Connection conn = BaseDao.getConn(); PreparedStatement pstmt = null; int row = 0; try { Class c=object.getClass(); Field[] fields = c.getDeclaredFields(); Field.setAccessible(fields, true); StringBuffer sBuffer = new StringBuffer("delete from "+c.getSimpleName()+" where "); sBuffer.append(fields[0].getName() +"=?"); pstmt = conn.prepareStatement(sBuffer.toString()); pstmt.setObject(1, fields[0].get(object)); row = pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally { BaseDao.closeAll(null, pstmt, conn); } return row; } //id查询 public Userss chaByid(int id){ Userss a = new Userss(); Connection conn = BaseDao.getConn(); PreparedStatement pstmt = null; ResultSet rs = null; String sql = "select * from Userss where id=?"; try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1, id); rs = pstmt.executeQuery(); while (rs.next()) { a.setId(rs.getInt("id")); a.setName(rs.getString("name")); a.setPassword(rs.getString("password")); } } catch (SQLException e) { e.printStackTrace(); } return a; }
}
Struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <!-- 通配符的请求路径方式--> <action name="userssAction_*" class="com.fengjie.action.UserssAction" method="{1}"> <!-- 返回结果 --> <result name="a" >cha.jsp</result> <result name="up" >update.jsp</result> </action> </package> </struts>
web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!-- struts2的核心过滤器 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> </web-app>
查询jsp页面
<%@page isELIgnored="false"language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>查询</title> </head> <body> <form action="userssAction_cha.action" method="post"> <table> <tr align="center"> <th>序号</th> <th>用户名</th> <th>密码</th> <th colspan="3">操作</th> </tr> <c:forEach items="${list}" var="a"> <tr align="center"> <td>${a.id}</td> <td>${a.name}</td> <td>${a.password}</td> <td><a href="insert.jsp">添加</a></td> <td><a href="userssAction_chaByid.action?userss.id=${a.id}">修改</a></td> <td><a href="userssAction_Delete.action?userss.id=${a.id}">删除</a></td> </tr> </c:forEach> </table> </form> </body> </html>
添加的jsp页面
<%@ page isELIgnored="false" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>添加</title> </head> <body> <form action="userssAction_cha.action" method="post"> <h1>新增用户</h1> <table> <tr> <td>用户名</td> <td><input type="text" name="userss.name"></td> </tr> <tr> <td>密码</td> <td><input type="password" name="userss.password"></td> </tr> </table> <input type="submit" value="添加用户"> </form> </body> </html>
修改jsp页面
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>修改</title> </head> <body> <form action="userssAction_Update.action" method="post"> <input type="hidden" name="userss.id" value="${a.id }"> <table> <tr> <td>用户名</td> <td><input type="text" name="userss.name" value="${a.name}"></td> </tr> <tr> <td>密码</td> <td><input type="password" name="userss.password" value="${a.password}"></td> </tr> </table> <input type="submit" value="修改用户"> </form> </body> </html>
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Fj_Struts2_01</groupId> <artifactId>Fj_Struts2_01</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>Fj_Struts2_01 Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope>
</dependency> <!-- 引入struts的核心 --> <!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.35</version> </dependency> <!-- 引入Servlet的核心依赖 --> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!--引用jstl--> <!-- https://mvnrepository.com/artifact/jstl/jstl --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!--引用standard --> <!-- https://mvnrepository.com/artifact/taglibs/standard - <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> </dependencies> <build> <finalName>Fj_Struts2_01</finalName> </build> </project>
如有疑问疑问请在评论区提出,我会尽快答复,如有更好的请跟我说一下。
- C# 连接 SQL Server 2008 基础操作+数据库增删改查
- PHP(面向对象)连接数据库,实现基本的增删改查
- asp基本操作-数据库连接-增删改查-搜索-session
- PHP连接数据库,实现最基本的增删改查(面向对象)
- .NET连接数据库以及基本的增删改查操作教程
- PHP连接数据库,实现最基本的增删改查(面向对象)
- C#进阶ADO.NET基础一 基本概念、数据库连接操作基础
- Oracle 10g数据库基础之基本查询语句-下-连接&子查询
- silverlight通过WCF连接数据库之增删改查
- Spring与JDBC连接实现对数据库的增删改查
- 数据库基本操作,增删改查
- 利用JDBC连接Mysql访问数据库完成增删改查操作
- 学习笔记_JDBC_1_Demo1_连接数据库的基本操作和步骤
- Flask中之数据库框架和模型类四:再述SQLAlchemy配置,表的操作和基本操作之增删改查
- 数据库基础(二),t-sql(通配符、运算符、增删改查语句、重命名、排序)
- JDBC(1)JAVA连接数据库之 基础知识学习
- 数据库 面试基础知识 和基本题型
- JDBC连接数据库及增删改查操作
- Web入门之JDBC连接数据库Servlet+Jsp实现增删改查
- 基本sql连接数据库