您的位置:首页 > 编程语言 > Java开发

基础的Struts2框架连接数据库基本的增删查改

2019-07-04 21:38 381 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Fj13141210/article/details/94657307

#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>

如有疑问疑问请在评论区提出,我会尽快答复,如有更好的请跟我说一下。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: