struts mysql 增删改查_Struts的增删改查

本文介绍了如何使用Struts2框架结合MySQL数据库实现增删改查功能。详细步骤包括:添加相关Maven依赖,创建分页Tag类,配置web.xml,DAO层操作,Web层调用DAO并返回数据,以及Struts配置和JSP页面展示。
摘要由CSDN通过智能技术生成

1、导入相关的pom依赖(struts、自定义标签库的依赖)

e360c49e4d5c922746099417a284fe54.png

pom.xml

4.0.0

com.zking

struts

war

0.0.1-SNAPSHOT

struts Maven Webapp

http://maven.apache.org

junit

junit

4.12

test

mysql

mysql-connector-java

5.1.44

javax.servlet

javax.servlet-api

4.0.1

provided

javax.servlet

javax.servlet-api

4.0.1

provided

org.apache.struts

struts2-core

2.5.16

jstl

jstl

1.2

taglibs

standard

1.1.2

org.apache.tomcat

tomcat-jsp-api

8.0.47

struts

org.apache.maven.plugins

maven-compiler-plugin

3.7.0

1.8

1.8

UTF-8

2、分页的tag类导入、z.tld、完成web.xml的配置

pageTag

package com.jt.tag;

import java.io.IOException;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Set;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.tagext.BodyTagSupport;

import com.jt.util.PageBean;public classPageTag extends BodyTagSupport {private static final long serialVersionUID = -553969530960334073L;privatePageBean pageBean;publicPageBean getPageBean() {returnpageBean;

}public voidsetPageBean(PageBean pageBean) {this.pageBean =pageBean;

}

@Overridepublic intdoStartTag() throws JspException {

JspWriterout =pageContext.getOut();try{out.print(toHTML());

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}returnsuper.doStartTag();

}privateString toHTML() {//TODO Auto-generated method stub

StringBuilder sb=newStringBuilder();//拼接下一次发送请求所要提交得隐藏得form表单

sb.append("

");

sb.append("");

Map paMap =pageBean.getPaMap();if(paMap!=null&&paMap.size()>0) {

Set> entrySet =paMap.entrySet();for (Entryentry : entrySet) {//上一次请求可能携带页码namepage得参数,但是改参数在前面以及单独赋值//为什么要单独赋值?因为上一次请求时第一页得数据,下一次可能时第二页,以后这前后请求page对应得值不一样,需要单独赋值

if(!"page".equals(entry.getKey())) {//[1,2]

for(String val:entry.getValue()) {

sb.append("");

}

}

}

}

sb.append("

");//拼接分页条

sb.append("

");

sb.append("每页"+pageBean.getRows()+"条,共"+pageBean.getTotal()+"条,第"+pageBean.getPage()+"页,共"+pageBean.getMaxPage()+"页  

sb.append("href='javascript:gotoPage(1)'>首页

  

sb.append("href='javascript:gotoPage("+pageBean.getpreviousPage()+")'>上一页

  

sb.append("href='javascript:gotoPage("+pageBean.getNextPage()+")'>下一页

  

sb.append("href='javascript:gotoPage("+pageBean.getMaxPage()+")'>尾页

  

sb.append("id='skipPage'");

sb.append("style='text-align: center; font-size: 12px; width: 50px;'>  

sb.append("href='javascript:skipPage()'>Go

");

sb.append("

");//拼接分页所需要得js代码

sb.append("

sb.append("function gotoPage(page) {");

sb.append("document.getElementById('pageBeanForm').page.value = page;");

sb.append("document.getElementById('pageBeanForm').submit();");

sb.append("}");

sb.append("function skipPage() {");

sb.append("var page = document.getElementById('skipPage').value;");

sb.append("if(!page || isNaN(page) || parseInt(page)<1 || parseInt(page)>"+pageBean.getMaxPage()+"){");

sb.append("alert('请输入1~N的数字');");

sb.append("return;");

sb.append("}");

sb.append("gotoPage(page);");

sb.append("}");

sb.append("");returnsb.toString();

}

}

z.tld

page

com.jt.tag.PageTag

JSP

pageBean

true

true

web.xml

Archetype Created Web Application

encodingFiter

com.jt.util.EncodingFiter

encodingFiter

/*

struts2

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

struts2

*.action

3、dao层去访问数据

实体类

Clazz

package com.jt.entity;public classClazz {private intcid;privateString cname;privateString cteacher;private String pic="图片暂定";public intgetCid() {returncid;

}public void setCid(intcid) {this.cid =cid;

}publicString getCname() {returncname;

}public voidsetCname(String cname) {this.cname =cname;

}publicString getCteacher() {returncteacher;

}public voidsetCteacher(String cteacher) {this.cteacher =cteacher;

}publicString getPic() {returnpic;

}public voidsetPic(String pic) {this.pic =pic;

}

@OverridepublicString toString() {return "Clazz [cid=" + cid + ", cname=" + cname + ", cteacher=" + cteacher + ", pic=" + pic + "]";

}

}

Clazzdao

package com.jt.dao;

import java.sql.SQLException;

import java.util.List;

import org.apache.commons.lang3.StringUtils;

import com.jt.entity.Clazz;

import com.jt.util.BaseDao;

import com.jt.util.PageBean;public class ClazzDao extends BaseDao{public Listlist(Clazz clazz,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{

String sql="select * from t_struts_class where true";

String cname=clazz.getCname();int cid=clazz.getCid();if(cid!=0) {

sql+="and cid ="+cid;

}if(StringUtils.isNoneBlank(cname)) {

sql+="and cname like '%"+cname+"%'";

}return super.executeQuery(sql,Clazz.class, pageBean);

}public intadd(Clazz clazz) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {

String sql="insert into t_struts_class values(?,?,?,?)";return super.executeupdate(sql, new String[] {"cid","cname","cteacher","pic"}, clazz);

}public intdel(Clazz clazz) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {

String sql="delete from t_struts_class where cid=?";return super.executeupdate(sql, new String[] {"cid"}, clazz);

}public intedit(Clazz clazz) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {

String sql="update t_struts_class set cname=?,cteacher=?,pic=?";return super.executeupdate(sql, new String[] {"cname","cteacher","pic","cid"}, clazz);

}

}

4、web层去调用dao层给前台返回数据

ClazzAction.java

package com.jt.web;

import java.sql.SQLException;

import java.util.List;

import com.jt.dao.ClazzDao;

import com.jt.entity.Clazz;

import com.jt.util.BaseAction;

import com.jt.util.PageBean;

import com.opensymphony.xwork2.ModelDriven;public class ClazzAction extends BaseAction implements ModelDriven{private Clazz clz=newClazz();private ClazzDao clzDao=newClazzDao();publicString list(){

PageBean pageBean=newPageBean();

pageBean.setRequest(request);try{

List list = this.clzDao.list(clz, pageBean);

request.setAttribute("clzList",list);

request.setAttribute("pageBean",pageBean);

}catch (InstantiationException | IllegalAccessException |SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}return "list";

}/**

* 跳转编辑页面 (新增修改页面)

* @return*/

publicString preSave() {if(clz.getCid()!=0) {try{this.result= this.clzDao.list(clz, null).get(0);

}catch (InstantiationException | IllegalAccessException |SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}return "preSave";

}publicString add() {try{this.code= this.clzDao.add(clz);

}catch (NoSuchFieldException | SecurityException | IllegalArgumentException |IllegalAccessException|SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}return "toList";

}publicString edit() {try{this.clzDao.edit(clz);

}catch (NoSuchFieldException | SecurityException | IllegalArgumentException |IllegalAccessException|SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}return "toList";

}publicString del() {try{this.clzDao.del(clz);

}catch (NoSuchFieldException | SecurityException | IllegalArgumentException |IllegalAccessException|SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}return "toList";

}

@OverridepublicClazz getModel() {//TODO Auto-generated method stub

returnclz;

}

}

5、在struts_sy.xml进行配置

/p>

"http://struts.apache.org/dtds/struts-2.5.dtd">

/success.jsp

/clzList.jsp

/clzEdit.jsp

/clz_list

6、写jsp

clzList.jsp

Insert title here

小说目录

书名:

增加

编号班级名称老师班级图片
${b.cid }${b.cname }${b.cteacher }${b.pic }

href="${pageContext.request.contextPath}/sy/clz_preSave.action?cid=${b.cid}">修改

  

href="${pageContext.request.contextPath}/sy/clz_del.action?cid=${b.cid}">删除

 

href="${pageContext.request.contextPath}/sy/clz_preUpload.action?cid=${b.cid}">图片上传

 

clzEdit.jsp

Insert title herecid:
cname:
cteacher:

938220d3624805e90f489c4929898072.png

7da12928a7450f87277aad7748e9ec5e.png

3e839ce456bee65f8055c0668be10416.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Struts2 是一个基于 MVC 设计模式的 Web 应用程序框架,可以用于快速开发 Java Web 应用程序,而 MySQL 是一个流行的关系型数据库管理系统,可以存储和管理数据。下面是一个简单的 Struts2 增删改查项目,使用 MySQL 作为后端数据库: 1. 创建数据库 首先需要创建一个名为 "struts2_crud" 的数据库,然后创建一个名为 "users" 的表,包含以下字段: id INT(11) PRIMARY KEY AUTO_INCREMENT name VARCHAR(50) email VARCHAR(50) password VARCHAR(50) 2. 配置 Struts2 在项目中的 "WEB-INF" 文件夹下创建一个名为 "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> <constant name="struts.devMode" value="true" /> <package name="default" extends="struts-default"> <action name="list" class="com.example.struts2crud.action.ListAction"> <result name="success">/list.jsp</result> </action> <action name="add" class="com.example.struts2crud.action.AddAction"> <result name="input">/add.jsp</result> <result name="success" type="redirectAction">list</result> </action> <action name="edit" class="com.example.struts2crud.action.EditAction"> <result name="input">/edit.jsp</result> <result name="success" type="redirectAction">list</result> </action> <action name="delete" class="com.example.struts2crud.action.DeleteAction" method="execute"> <result name="success" type="redirectAction">list</result> </action> </package> </struts> ``` 此配置文件定义了四个 action,分别是 "list"、"add"、"edit" 和 "delete"。 3. 创建 Java 类 创建以下四个 Java 类,分别对应上述四个 action: ListAction.java: ``` package com.example.struts2crud.action; import java.util.List; import com.example.struts2crud.dao.UserDAO; import com.example.struts2crud.model.User; import com.opensymphony.xwork2.ActionSupport; public class ListAction extends ActionSupport { private static final long serialVersionUID = 1L; private List<User> userList; public String execute() { try { userList = new UserDAO().getAllUsers(); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } } ``` AddAction.java: ``` package com.example.struts2crud.action; import com.example.struts2crud.dao.UserDAO; import com.example.struts2crud.model.User; import com.opensymphony.xwork2.ActionSupport; public class AddAction extends ActionSupport { private static final long serialVersionUID = 1L; private User user; public String execute() { try { new UserDAO().addUser(user); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } ``` EditAction.java: ``` package com.example.struts2crud.action; import com.example.struts2crud.dao.UserDAO; import com.example.struts2crud.model.User; import com.opensymphony.xwork2.ActionSupport; public class EditAction extends ActionSupport { private static final long serialVersionUID = 1L; private User user; public String execute() { try { new UserDAO().updateUser(user); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } ``` DeleteAction.java: ``` package com.example.struts2crud.action; import com.example.struts2crud.dao.UserDAO; import com.opensymphony.xwork2.ActionSupport; public class DeleteAction extends ActionSupport { private static final long serialVersionUID = 1L; private int id; public String execute() { try { new UserDAO().deleteUser(id); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } public int getId() { return id; } public void setId(int id) { this.id = id; } } ``` 4. 创建 JSP 页面 创建以下三个 JSP 页面: list.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Struts2 CRUD Example</title> </head> <body> <h2>Users List</h2> <table border="1"> <tr> <th>ID</th> <th>Name</th> <th>Email</th> <th>Password</th> <th>Action</th> </tr> <s:iterator value="userList"> <tr> <td><s:property value="id"/></td> <td><s:property value="name"/></td> <td><s:property value="email"/></td> <td><s:property value="password"/></td> <td> <s:url id="editUrl" action="edit"> <s:param name="user.id" value="%{id}"/> </s:url> <s:url id="deleteUrl" action="delete"> <s:param name="id" value="%{id}"/> </s:url> <s:a href="%{editUrl}">Edit</s:a> <s:a href="%{deleteUrl}">Delete</s:a> </td> </tr> </s:iterator> </table> <br> <s:url id="addUrl" action="add"/> <s:a href="%{addUrl}">Add New User</s:a> </body> </html> ``` add.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Struts2 CRUD Example</title> </head> <body> <h2>Add New User</h2> <s:form action="add"> <s:textfield name="user.name" label="Name"/> <s:textfield name="user.email" label="Email"/> <s:textfield name="user.password" label="Password"/> <s:submit value="Save"/> </s:form> <br> <s:url id="listUrl" action="list"/> <s:a href="%{listUrl}">Back to List</s:a> </body> </html> ``` edit.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Struts2 CRUD Example</title> </head> <body> <h2>Edit User</h2> <s:form action="edit"> <s:hidden name="user.id"/> <s:textfield name="user.name" label="Name"/> <s:textfield name="user.email" label="Email"/> <s:textfield name="user.password" label="Password"/> <s:submit value="Save"/> </s:form> <br> <s:url id="listUrl" action="list"/> <s:a href="%{listUrl}">Back to List</s:a> </body> </html> ``` 5. 创建 DAO 类 创建一个名为 "UserDAO.java" 的 DAO 类,用于操作数据库: ``` package com.example.struts2crud.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import com.example.struts2crud.model.User; public class UserDAO { public static final String URL = "jdbc:mysql://localhost:3306/struts2_crud"; public static final String USER = "root"; public static final String PASSWORD = "password"; public Connection getConnection() throws Exception { Class.forName("com.mysql.jdbc.Driver"); return DriverManager.getConnection(URL, USER, PASSWORD); } public List<User> getAllUsers() throws Exception { List<User> userList = new ArrayList<>(); String sql = "SELECT * FROM users"; try (Connection conn = getConnection(); PreparedStatement stmt = conn.prepareStatement(sql); ResultSet rs = stmt.executeQuery()) { while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setEmail(rs.getString("email")); user.setPassword(rs.getString("password")); userList.add(user); } } return userList; } public void addUser(User user) throws Exception { String sql = "INSERT INTO users (name, email, password) VALUES (?, ?, ?)"; try (Connection conn = getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setString(1, user.getName()); stmt.setString(2, user.getEmail()); stmt.setString(3, user.getPassword()); stmt.executeUpdate(); } } public void updateUser(User user) throws Exception { String sql = "UPDATE users SET name = ?, email = ?, password = ? WHERE id = ?"; try (Connection conn = getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setString(1, user.getName()); stmt.setString(2, user.getEmail()); stmt.setString(3, user.getPassword()); stmt.setInt(4, user.getId()); stmt.executeUpdate(); } } public void deleteUser(int id) throws Exception { String sql = "DELETE FROM users WHERE id = ?"; try (Connection conn = getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setInt(1, id); stmt.executeUpdate(); } } } ``` 6. 运行项目 将以上代码保存到项目中,然后启动项目,访问 "http://localhost:8080/项目名/list.action" 即可看到用户列表。可以点击 "Add New User" 按钮添加新用户,点击 "Edit" 按钮编辑用户信息,点击 "Delete" 按钮删除用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值