Struts的增删改查

一、项目

1、首先新建maven项目

2、导入pom.xml依赖,jar依赖

                web.xml改成3.1

                导入struts相关的配置文件

                jdk1.5-->1.8-->同时pom.xml需要添加plugins>plugin

                web.2.3==>3.1

3、子控制器

将所需的工具类导入

助手类:

 

 tid文件:

导入Tomcat依赖:

 

<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>zw.com</groupId>
  <artifactId>zw.struts</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>zw.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>zw.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>

执行时进度条慢的原因:

1、可能是maven的jar包下载很慢,网速问题

2、eclipse中默认开了许多验证

关闭多验证:

 搜索validation,Disable All取消所有打勾选项,给第一行打钩

 二、BaseAction的实现

子控制器action每次都要重写方法,因此写一个共用的子控制器

其他的子控制器只要继承这个共用子控制器,也可以直接返回父类所定义的值

共用子控制器需要继承ActionSupport,与实现ServletRequestAware,ServletResponseAware,ModelDriven<T>

BaseAction:

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="list";
//    每个子控制器都要实现对应接口,拿到request、response对象
    @Override
        public void setServletRequest(HttpServletRequest request) {
            this.req=request;
            this.session=request.getSession();
        }
    
    @Override
        public void setServletResponse(HttpServletResponse response) {
            this.resp=response;
            
        }
//    向前端页面反馈的数据变量不统一
//    结果:
    protected Object result;
//    提示信息
    protected String msg;
//    状态
    protected int code;
    
}

ClzAction:

public class ClzAction extends BaseAction{
    @Override
    public Object getModel() {
        // TODO Auto-generated method stub
        return null;
    }
    
    public String list() throws Exception {
        return LIST;
    }

}

三、增删改查

Dao方法:

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 from t_struts_class where cid=?";
        super.executeUpdate(sql, t, new String[] {"cid"});
    }
    
    
}

ClzAction:

public class ClzAction extends BaseAction<Clz>{
    private Clz clz=new Clz();
    private ClzDao clzDao=new ClzDao();
    @Override
    public Clz getModel() {
        // TODO Auto-generated method stub
        return clz;
    }
    
//    查询班级列表
    public String list() throws Exception {
        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;
    }
    
//    跳转新增/修改界面
    public String toEdit() throws Exception {
        int cid = clz.getCid();
        if(cid!=0) {
             this.result=this.clzDao.list(clz, null).get(0);
            this.req.setAttribute("result", result);
        }
        return TOEDIT;
    }
    
//    新增
    public String add() throws Exception {
        this.clzDao.add(clz);
        return TOLIST;
    }
    
//    修改
    public String edit() throws Exception {
        this.clzDao.edit(clz);
        return TOLIST;
    }
    
//    删除
    public String del() throws Exception {
        this.clzDao.del(clz);
        return TOLIST;
    }

}

配置:

<!-- type选项有四个选项
    1、默认forward,标签体对应的转发页面
    2、action,标签体对应的转发的action后台方法
    3、redirect,标签体对应的重定向页面
    4、redirectAction,标签体对应的重定向Action后台方法 -->
    <action name="/clz_*" class="com.lv.web1.ClzAction" method="{1}">
        <result name="list">/clzList.jsp</result>
        <result name="toList" type="redirectAction">/clz_list</result>
        <result name="toEdit" >/clzEdit.jsp</result>
    </action>

界面调用方法:

<%@ 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'>
<link
    href='https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css'
    rel='stylesheet'>
<script
    src='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">
        ID:<input type="text" name="cid" value="${result.cid }"><br>
        名字:<input type="text" name="cname" value="${result.cname }"><br>
        老师:<input type="text" name="cteacher" value="${result.cteacher}"><br>
        <input type="submit">
    </form>

</body>
</html>

效果:

 增加:

 修改:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值