一.新建项目

二.导入pom.xml的相关依赖

1.web.xml改成3.1的版本

2.导入struts相关的配置文件

3.jdk1.5改为1.8   web2.3改为3.1

4.pom.xml需要添加plugins>plugin

<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>com.wmy</groupId><artifactId>T269_struts</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>T269_struts Maven Webapp</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version><!--添加jar包依赖--><!--mysql--><mysql.version>8.0.19</mysql.version><!--5.其他--><junit.version>4.12</junit.version><servlet.version>4.0.0</servlet.version><jackson.version>2.9.3</jackson.version><jstl.version>1.2</jstl.version><standard.version>1.1.2</standard.version><tomcat-jsp-api.version>8.0.47</tomcat-jsp-api.version><commons-beanutils.version>1.9.3</commons-beanutils.version><dom4j.version>1.6.1</dom4j.version><jaxen.version>1.1.6</jaxen.version><struts2-core.version>2.5.13</struts2-core.version></properties><dependencies><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>${struts2-core.version}</version></dependency><dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>${jaxen.version}</version></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>${dom4j.version}</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>${commons-beanutils.version}</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet.version}</version><scope>provided</scope></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>${standard.version}</version></dependency><dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-jsp-api</artifactId><version>${tomcat-jsp-api.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version><scope>provided</scope></dependency><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.github.davidcarboni</groupId><artifactId>encrypted-file-upload</artifactId><version>2.1.0</version></dependency> </dependencies><build><finalName>T269_struts</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.7.0</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build>
</project>

三.导入帮助类以及tld文件

如图:

四.Struts增删改查的编码

思路步骤:1.实体类 2.dao类 3.子控制器
本节课的内容区别在于:BaseAction(优化BaseAction)

1.编码习惯问题,容易出现大小写配置错误

2.每个子控制器都要实现对应接口,拿到request和respons对象

3.向前端页面反馈的数据变量不统一

package com.wmy.crud.web;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;public abstract class BaseAction<T> extends ActionSupport implements ServletRequestAware,ServletResponseAware,ModelDriven<T>{
protected HttpServletRequest req;
protected HttpServletResponse resp;
protected HttpSession session;
protected static final String LIST = "list";
protected static final String TOLIST = "toList";
protected static final String TOEdit = "toEdit";@Override
public void setServletResponse(HttpServletResponse response) {this.resp=response;}
@Override
public void setServletRequest(HttpServletRequest request) {this.req=request;this.session=request.getSession();}
//3.向前端页面反馈的数据变量不统一
protected Object result;
protected String msg;
protected int code;public Object getResult() {return result;
}
public void setResult(Object result) {this.result = result;
}
public String getMsg() {return msg;
}
public void setMsg(String msg) {this.msg = msg;
}
public int getCode() {return code;
}
public void setCode(int code) {this.code = code;
}}

第一步:创建实体类Clz

package com.wmy.crud.entity;public class Clz {private int cid;private String cname;private String cteacher;private String pic;
public int getCid() {return cid;
}
public void setCid(int cid) {this.cid = cid;
}
public String getCname() {return cname;
}
public void setCname(String cname) {this.cname = cname;
}
public String getCteacher() {return cteacher;
}
public void setCteacher(String cteacher) {this.cteacher = cteacher;
}
public String getPic() {return pic;
}
public void setPic(String pic) {this.pic = pic;
}
@Override
public String toString() {return "Clz [cid=" + cid + ", cname=" + cname + ", cteacher=" + cteacher + ", pic=" + pic + "]";
}}

第二步:Dao层ClzDao

package com.wmy.crud.dao;import java.util.List;import com.pjl.crud.entity.Clz;
import com.pjl.crud.util.BaseDao;
import com.pjl.crud.util.PageBean;public class ClzDao extends BaseDao<Clz>{public List<Clz> list(Clz clz, PageBean pageBean) throws Exception {String sql = "select * from t_struts_class where 1=1 ";int cid=clz.getCid();if(cid !=0) {sql += " and cid ="+cid;}return super.executeQuery(sql,Clz.class, pageBean);}public void add(Clz t) throws Exception {String sql = "insert into t_struts_class values(?,?,?,?)";super.executeUpdate(sql,t,new String[] {"cid","cname","cteacher","pic"});}public void edit(Clz t) throws Exception {String sql = "update t_struts_class set cname=?,cteacher=?,pic=? where cid=?";super.executeUpdate(sql,t,new String[] {"cname","cteacher","pic","cid"});}public void del(Clz t) throws Exception {String sql = "delete t_truts_class where cid=?";super.executeUpdate(sql,t,new String[] {"cid"});}}

 第三步:子控制器ClzActionweb层

package com.wmy.crud.web;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.interceptor.ServletRequestAware;import com.opensymphony.xwork2.ActionSupport;
import com.wmy.crud.dao.ClzDao;
import com.wmy.crud.entity.Clz;
import com.wmy.crud.util.PageBean;public class ClzAction extends BaseAction<Clz>{private Clz clz=new Clz(); private ClzDao clzDao =new ClzDao();
/*** 查询班级列表* @return* @throws Exception*/public String list() throws Exception {//首先对pagebean进行初始化PageBean pageBean = new PageBean();pageBean.setRequest(req);this.result=this.clzDao.list(clz, pageBean);//返回,从父层定义好的this.req.setAttribute("result",result);this.req.setAttribute("pageBean",pageBean);return LIST;
}
/*** 跳转新增/修改界面* @return* @throws Exception*/
public String toEdit() throws Exception {//作判断int cid=clz.getCid();//如果传了cid,则跳修改界面if(cid != 0) {this.result=this.clzDao.list(clz, null).get(0);this.req.setAttribute("result",result);}return TOEdit;
}
/*** 往数据库新增数据* @return* @throws Exception*/
public String add() throws Exception {this.clzDao.add(clz);return TOLIST;
}
/*** 修改数据* @return* @throws Exception*/
public String edit() throws Exception {this.clzDao.edit(clz);return TOLIST;
}
/*** 删除数据* @return* @throws Exception*/
public String del() throws Exception {this.clzDao.del(clz);return TOLIST;
}@Override
public Clz getModel() {return clz;
}}

第四步:所需界面

ClzEdit.jsp

<%@ page language='java' contentType='text/html; charset=UTF-8'pageEncoding='UTF-8'%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="z" uri="http://jsp.veryedu.cn"%>
<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<linkhref='https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css'rel='stylesheet'>
<scriptsrc='https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js'></script>
<title>新增/修改书籍列表</title></head>
<body><form class="form-inline"action="${pageContext.request.contextPath }/sy/Clz_${empty result ? 'add' : 'edit'}.action" method="post">cid:<input type="text" name="cid" value="${result.cid }"><br>cname:<input type="text" name="cname" value="${result.cname }"><br>cteacher:<input type="text" name="cteacher" value="${result.cteacher}"><br><input type="submit"></form></body>
</html>

ClzList.jsp

<%@ page language='java' contentType='text/html; charset=UTF-8'pageEncoding='UTF-8'%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="z" uri="http://jsp.veryedu.cn"%>
<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<linkhref='https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css'rel='stylesheet'>
<scriptsrc='https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js'></script>
<title>书籍列表</title>
<style type='text/css'>
.page-item input {padding: 0;width: 40px;height: 100%;text-align: center;margin: 0 6px;
}.page-item input, .page-item b {line-height: 38px;float: left;font-weight: 400;
}.page-item.go-input {margin: 0 10px;
}
</style>
</head>
<body><form class="form-inline"action="${pageContext.request.contextPath }/sy/Clz_list.action" method='post'><div class='form-group mb-2'><input type='text' class='form-control-plaintext' name='bname'placeholder='请输入书籍名称'><!-- 不分页 --><!--     <input name="rows" value="false" type="hidden"> --></div><button type='submit' class='btn btn-primary mb-2'>查询</button><a  class='btn btn-primary mb-2' href="${pageContext.request.contextPath }/sy/Clz_toEdit.action">新增</a></form><table class='table table-striped bg-success'><thead><tr><th scope='col'>ID</th><th scope='col'>班级名字</th><th scope='col'>教员</th><th scope='col'>图片</th><th scope='col'>操作</th></tr></thead><tbody><c:forEach var="b" items="${result }"><tr><td>${b.cid }</td><td>${b.cname }</td><td>${b.cteacher }</td><td>${b.pic }</td><td><a href="${pageContext.request.contextPath }/sy/Clz_toEdit.action?cid=${b.cid}">>修改</a><a href="${pageContext.request.contextPath }/sy/Clz_del.action?cid=${b.cid}">>删除</a></td></tr></c:forEach></tbody></table><!-- 这一行就相当于前面分页需求前端的几十行了 --><%--  <z:page pageBean="${pageBean }"></z:page>  --%></body>
</html>

效果:

Struts的增删改查相关推荐

  1. struts mysql 增删改查_struts2增删改查

    1.导入相关的依赖:struts.自定义标签库 配置pom.xml xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http:// ...

  2. SSH(Struts 2.3.31 + Spring 4.1.6 + Hibernate 5.0.12 + Ajax)框架整合实现简单的增删改查(包含分页,Ajax 无刷新验证该用户是否存在)...

    软件152 余建强 该文将以员工.部门两表带领大家进入SSH的整合教程: 源码下载:http://download.csdn.net/detail/qq_35318576/9877235 SSH 整合 ...

  3. 基于SpringBoot开发一个Restful服务,实现增删改查功能

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:虚无境 cnblogs.com/xuwujing/p/8260935.html 前言 在去 ...

  4. 基于 Spring Boot 的 Restful 风格实现增删改查

    前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...

  5. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

    此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...

  6. springboot增删改查案例_大神基于SpringBoot开发一个Restful服务,实现增删改查功能...

    前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...

  7. dept在Java里面_EmpDeptManager 在JavaEE环境下搭建三大框架体系实现员工的增删改查系统 Develop 261万源代码下载- www.pudn.com...

    文件名称: EmpDeptManager下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 39 KB 上传时间: 2016-07-08 下载次数: 0 提 供 者 ...

  8. 论坛模块_版块管理_增删改查实现上下移动

    论坛模块_版块管理1_增删改查 设计实体Forum.java public class Forum {private Long id;private String name;private Strin ...

  9. OA项目实战学习(3)——实现岗位管理增删改查

    我们这里注重实现功能,对页面不进行布局. 一.分析增删改查的功能: 添加.修改.删除成功后 要重定向到列表功能,这样在刷新页面时才不会出现"又做一次增.删.改"的操作. 列表与删除 ...

  10. Struts2 注解开发实现简单的增删改查,超详细教程

    声明:此文是原创,如果需要转载请注明出处:https://blog.csdn.net/hunter_max/article/details/80575542 上一篇博客<Struts2 注解开发 ...

最新文章

  1. 微信小程序网络请求代码片段
  2. php 单一职责,PHP之单例模式(职责模式)
  3. 【Tools】git操作总结
  4. 嵌入式ARM Linux开发板自启动,跳过输入root用户名和密码
  5. PMCAFF微分享 | 阿檬:如何设计好工具型软件?产品经理必备技能
  6. 34.11. 视图、存储过程、函数
  7. flash mini site Part 1 MUMA-新闻,演出系统
  8. 推荐一款图片轮换jQuery插件
  9. 10个精美免费PPT模板下载网站推荐
  10. Sql优化总结!详细!(2021最新面试必问)
  11. php cimage类,强大的多功能的用VB编写的高速图像处理库Cimage简介! - 小志的日志 - 电子工程世界-论坛...
  12. 共享文件夹加密专家_文件加密_公司如何防止员工内部泄密?
  13. 轻松搞出一个云盘项目(一),一般人我不告诉哦。
  14. python群发邮件 不进垃圾箱_邮件群发如何不进垃圾箱
  15. IDM All Products全系列破解UltraEditUltraCompareUEStudioUltraFTPUltraFinder全部最新版产品破解补丁及注册机补丁破解
  16. chrome firefox 获取模拟微信浏览器
  17. Dreamware CC开发网页小问题汇总
  18. imx8qxp DDR Test
  19. 局域网应用的安全需求
  20. Autobahn实现WebSocket通信

热门文章

  1. ROS实战篇(一)如何在ROS中编写自己的package?------ 以节点通信为例
  2. 使用CSS实现国际象棋棋盘
  3. SYS/BIOS与SRIO应用实例
  4. cad快捷栏怎么调出来_如何显示CAD的工具栏?CAD如何调出工具栏
  5. cad2019菜单栏怎么调出来_AutoCAD2019怎么把工具栏放左右两边两侧工具栏调出来
  6. 算法学习——K近邻算法
  7. Oracle项目管理系统之质量控制
  8. linux系统sdio接口wifi编程,3个SDIO接口WiFi模块/WiFi+蓝牙组合模块介绍-SKYLAB
  9. ubuntu1804下txt文件乱码问题
  10. 酒店旅业治安管理系统接口开发