zoukankan      html  css  js  c++  java
  • Struts增删改查

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

    <dependency>
              <groupId>jstl</groupId>
              <artifactId>jstl</artifactId>
              <version>1.2</version>
            </dependency>
            
            <dependency>
              <groupId>taglibs</groupId>
              <artifactId>standard</artifactId>
              <version>1.1.2</version>
            </dependency>
            
            <dependency>
              <groupId>org.apache.tomcat</groupId>
              <artifactId>tomcat-jsp-api</artifactId>
              <version>8.0.47</version>
            </dependency>
    

      

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

    pagetag

    package com.zl.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.zl.util.PageBean;
    
    
    public class PageTag extends BodyTagSupport {
    
        private static final long serialVersionUID = -553969530960334073L;
    
        private PageBean pageBean;
    
        public PageBean getPageBean() {
            return pageBean;
        }
    
        public void setPageBean(PageBean pageBean) {
            this.pageBean = pageBean;
        }
        @Override
        public int doStartTag() throws JspException {
            JspWriter out = pageContext.getOut();
            try {
                out.print(toHTML());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return super.doStartTag();
        }
    
        private String toHTML() {
            // TODO Auto-generated method stub
            StringBuilder sb=new StringBuilder();
            //拼接下一次发送请求所要提交得隐藏得form表单
            sb.append(" <form id='pageBeanForm' action='"+pageBean.getUrl()+"' method='post'> ");
            sb.append(" <input type='hidden' name='page'> ");
            Map<String, String[]> paMap = pageBean.getPaMap();
            if(paMap!=null&&paMap.size()>0) {
                Set<Entry<String, String[]>> entrySet = paMap.entrySet();
                for (Entry<String, String[]> entry : entrySet) {
                    //上一次请求可能携带页码namepage得参数,但是改参数在前面以及单独赋值
                    //为什么要单独赋值?因为上一次请求时第一页得数据,下一次可能时第二页,以后这前后请求page对应得值不一样,需要单独赋值
                    if(!"page".equals(entry.getKey())) {
    //                    <input type='hidden' name='hobby' value='1'>
    //                    <input type='hidden' name='hobby' value='2'>
                        //[1,2]
                        for(String val:entry.getValue()) {
                            sb.append(" <input type='hidden' name='"+entry.getKey()+"' value='"+val+"'> ");
                        }
                    }
                }
            }
    
            sb.append(" </form>");
            //拼接分页条
            sb.append(" <div style='text-align: right; font-size: 12px;'> ");
            sb.append(" 每页"+pageBean.getRows()+"条,共"+pageBean.getTotal()+"条,第"+pageBean.getPage()+"页,共"+pageBean.getMaxPage()+"页  <a ");
            sb.append(" href='javascript:gotoPage(1)'>首页</a>  <a");
            sb.append(" href='javascript:gotoPage("+pageBean.getpreviousPage()+")'>上一页</a>  <a");
            sb.append(" href='javascript:gotoPage("+pageBean.getNextPage()+")'>下一页</a>  <a");
            sb.append(" href='javascript:gotoPage("+pageBean.getMaxPage()+")'>尾页</a>  <input type='text'");
            sb.append(" id='skipPage'");
            sb.append(" style='text-align: center; font-size: 12px;  50px;'>  <a");
            sb.append(" href='javascript:skipPage()'>Go</a>");
            sb.append(" </div>");
            //拼接分页所需要得js代码
            sb.append(" <script type='text/javascript'>    ");
            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(" </script>");
        
            
            return sb.toString();
        }
    
    
    }
    

      

    z.tld

    <tag>
        <!-- 标签库中的标签(类似c:set c:out的定义) -->
        <name>page</name>
        <!-- 是标签运行具体代码,也是助手类,下面填写的是助手类的全路径名 -->
        <tag-class>com.zl.tag.PageTag</tag-class>
        <body-content>JSP</body-content>
        <attribute>
        <!-- 该标签的属性 -->
            <name>pageBean</name>
            <!-- 该属性是否必填 -->
            <required>true</required>
            <!-- 是否支持表达式 -->
            <rtexprvalue>true</rtexprvalue>
        </attribute>
      </tag>
    

      

    web.xml

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
      <display-name>Archetype Created Web Application</display-name>
      <filter>
          <filter-name>encodingFiter</filter-name>
          <filter-class>com.zl.util.EncodingFiter</filter-class>
      </filter>
      <filter-mapping>
           <filter-name>encodingFiter</filter-name>
           <url-pattern>/*</url-pattern>
      </filter-mapping>
      <filter>
      <filter-name>struts2</filter-name>
       <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
      </filter-mapping>
    </web-app>
    

      

    3、dao层去访问数据

     实体类

    package com.zl.entity;
    
    public class Clazz {
    
        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 "Clazz [cid=" + cid + ", cname=" + cname + ", cteacher=" + cteacher + ", pic=" + pic + "]";
        }
        
    }
    

      

     clazzdao

    package com.zl.dao;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import org.apache.commons.lang3.StringUtils;
    
    import com.zl.entity.Clazz;
    import com.zl.util.BaseDao;
    import com.zl.util.PageBean;
    
    public class ClazzDao extends BaseDao<Clazz> {
    
        public List<Clazz> list(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 int add(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 int del(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 int edit(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.zl.web;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import com.zl.dao.ClazzDao;
    import com.zl.entity.Clazz;
    import com.zl.util.BaseAction;
    import com.zl.util.PageBean;
    import com.opensymphony.xwork2.ModelDriven;
    
    public class ClazzAction extends BaseAction implements ModelDriven<Clazz>{
    
        private Clazz clz=new Clazz();
        private ClazzDao clzDao=new ClazzDao();
        public String list(){
            PageBean pageBean =new PageBean();
            pageBean.setRequest(request);
            try {
                List<Clazz> 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
         */
        public String 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";
            
        }
        public String add() {
            try {
                this.code= this.clzDao.add(clz);
            } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException
                    | SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return "toList";
            
        }
        public String edit() {
            try {
                this.clzDao.edit(clz);
            } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException
                    | SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return "toList";
            
        }
        public String del() {
            try {
                this.clzDao.del(clz);
            } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException
                    | SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return "toList";
            
        }
    
        @Override
        public Clazz getModel() {
            // TODO Auto-generated method stub
            return clz;
        }
    

    }

      

    5、在struts_sy.xml进行配置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <package name="sy" extends="base" >
        
        <action name="/hello_*" class="com.jt.HelloAction" method="{1}">
          <result name="success">/success.jsp</result>
        </action>
        <action name="/clz_*" class="com.jt.web.ClazzAction" method="{1}">
          <result name="list">/clzList.jsp</result>
          <result name="preSave">/clzEdit.jsp</result>
          <result name="toList" type="redirectAction">/clz_list</result>
        </action>
        </package>
    </struts>
    

      

    6.写jsp

    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="/jt"%>
    <!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">
    <title>Insert title here</title>
    </head>
    <body>
        <h2>小说目录</h2>
        <br>
    
        <form action="${pageContext.request.contextPath}/sy/clz_list.action"
            method="post">
            书名:<input type="text" name="bname"> <input type="submit"
                value="确定">
        </form>
        <a href="${pageContext.request.contextPath}/sy/clz_preSave.action">增加</a>
        <table border="1" width="100%">
            <tr>
                <td>编号</td>
                <td>班级名称</td>
                <td>老师</td>
                <td>班级图片</td>
            </tr>
            <c:forEach items="${clzList }" var="b">
                <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_preSave.action?cid=${b.cid}">修改</a>  
                        <a
                        href="${pageContext.request.contextPath}/sy/clz_del.action?cid=${b.cid}">删除</a> 
                        <a
                        href="${pageContext.request.contextPath}/sy/clz_preUpload.action?cid=${b.cid}">图片上传</a> 
                    </td>
                </tr>
            </c:forEach>
        </table>
        <z:page pageBean="${pageBean }"></z:page>
    </body>
    </html>
    

      

    clzEdit.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!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">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="${pageContext.request.contextPath}${result.cname == null ? '/sy/clz_add.action' : '/sy/clz_edit.action'}" method="post">
       cid:<input type="text" value="${result.cid }" name="cid"><br>
       cname:<input type="text" value="${result.cname }" name="cname"><br>
      cteacher:<input type="text" value="${result.cteacher }" name="cteacher"><br>
       <input type="submit" value="ok">
    </form>
    </body>
    </html>
    

      

  • 相关阅读:
    Step by step Dynamics CRM 2013安装
    SQL Server 2012 Managed Service Account
    Step by step SQL Server 2012的安装
    Step by step 活动目录中添加一个子域
    Step by step 如何创建一个新森林
    向活动目录中添加一个子域
    活动目录的信任关系
    RAID 概述
    DNS 正向查找与反向查找
    Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs
  • 原文地址:https://www.cnblogs.com/BAYOUA/p/11267487.html
Copyright © 2011-2022 走看看