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

配置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>com</groupId>
<artifactId>strtus</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>strtus Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency> <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.16</version>
</dependency>
<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> </dependencies>
<build>
<finalName>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>

  分页:

package com.util;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

public class PageBean {

	private int page = 1;// 页码
private int rows = 10;// 行数/页大小
private int total = 0;// 总记录数 private boolean pagination = true;// 默认分页 private String url;// 上一次请求的地址
private Map<String, String[]> parameterMap;// 上一次请求的所有参数 public PageBean() {
super();
} /**
* 对分页bean进行初始化
*
* @param request
*/
public void setRequest(HttpServletRequest request) {
// 公共参数
this.setPage(request.getParameter("page"));
this.setRows(request.getParameter("rows"));
this.setPagination(request.getParameter("pagination")); // 请求地址和请求参数
this.setUrl(request.getContextPath() + request.getServletPath());
this.setParameterMap(request.getParameterMap());
} public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} public Map<String, String[]> getParameterMap() {
return parameterMap;
} public void setParameterMap(Map<String, String[]> parameterMap) {
this.parameterMap = parameterMap;
} public int getPage() {
return page;
} public void setPage(int page) {
this.page = page;
} public void setPage(String page) {
if (null != page && !"".equals(page.trim())) {
this.page = Integer.parseInt(page);
}
} public int getRows() {
return rows;
} public void setRows(int rows) {
this.rows = rows;
} public void setRows(String rows) {
if (null != rows && !"".equals(rows.trim())) {
this.rows = Integer.parseInt(rows);
}
} public int getTotal() {
return total;
} public void setTotal(int total) {
this.total = total;
} public void setTotal(String total) {
this.total = Integer.parseInt(total);
} public boolean isPagination() {
return pagination;
} public void setPagination(boolean pagination) {
this.pagination = pagination;
} public void setPagination(String pagination) {
if ("false".equals(pagination)) {
this.pagination = false;
}
} /**
* 下一页
*
* @return
*/
public int getNextPage() {
int nextPage = page + 1;
if (nextPage > this.getMaxPage()) {
nextPage = this.getMaxPage();
}
return nextPage;
} /**
* 上一页
*
* @return
*/
public int getPreviousPage() {
int previousPage = page - 1;
if (previousPage < 1) {
previousPage = 1;
}
return previousPage;
} /**
* 最大页码
*
* @return
*/
public int getMaxPage() {
return total % rows == 0 ? total / rows : total / rows + 1;
} /**
* 起始记录的下标
*
* @return
*/
public int getStartIndex() {
return (page - 1) * rows;
} @Override
public String toString() {
return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
} }

  Dao层:

ClazzDao

package com.dao;

import java.util.List;

import com.entity.Clazz;
import com.util.BaseDao;
import com.util.PageBean;
import com.util.StringUtils; public class ClazzDao extends BaseDao<Clazz>{
public List<Clazz> list(Clazz clz, PageBean pageBean) throws InstantiationException, IllegalAccessException{
String sql="select * from t_strtus_class";
String cname=clz.getCname();
if (StringUtils.isNotBlank(cname)) {
sql+=" and cname like '%"+cname+"%'";
}
return super.executeQuery(sql, pageBean,Clazz.class); }
public int add(Clazz clazz) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
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 {
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 {
String sql="update t_struts_class set cname=?,cteacher=?,pic=?";
return super.executeupdate(sql, new String[] {"cname","cteacher","pic","cid"}, clazz); }
}

  web层调用数据返回给前台

package com.web;

import java.sql.SQLException;
import java.util.List; import com.dao.ClazzDao;
import com.entity.Clazz;
import com.util.BaseAction;
import com.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;
}
}

  配置strtus-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="/clz_*" class="com.web.ClazzAction" method="{1}">
<result name="list">/clzList.jsp</result>
<result name="preSave">/Edit.jsp</result>
<result name="toList" type="redirectAction">/clz_list</result>
</action>
</package>
</struts>

  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="/lingerqi"%>
<!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>

  edit.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>

struts2增删改查的更多相关文章

  1. struts2增删改查---layer---iframe层

    在这里写一下struts2中的简单的增删改查 struts.xml中的配置 <?xml version="1.0" encoding="UTF-8" ?& ...

  2. struts2增删改查---layer---iframe层---通配符---国际化

    在前一篇文章的基础上,修改一部分即可(在此只是简单介绍) struts.xml页面 在原来的基础之上 action的name="*_*"  class="包名.{1}&q ...

  3. Struts2增删改查(自己思路理解)

    1:查询所有: DAO层:把所有的信息都放到list集合中.然后返回. public List<Employee> getEmployees(){ return new ArrayList ...

  4. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

  5. SSHE框架整合(增删改查)

    1.前期准备:jar包(c3p0.jdbc ,各个框架) web.xml文件:spring的   转码的,和Struts2的过滤器 <?xml version="1.0" e ...

  6. EasyUI + Spring MVC + hibernate实现增删改查导入导出

    (这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...

  7. 详谈easyui datagrid增删改查操作

    转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...

  8. SSH登录与增删改查demo详解+源代码

    点击下载,测试绝对可用SSH整合框架登录加增删改查demo 下载地址:http://download.csdn.net/detail/qq_33599520/9784679   一.框架概述 spri ...

  9. 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 整合 ...

随机推荐

  1. new String()与toString

    str.toString是调用了str这个object对象的类的toString方法.一般是返回这么一个String:[class name]@[hashCode].new String(str)是根 ...

  2. 第11章 UDP:用户数据报协-----读书笔记

    1.分片应用程序只关心IP数据报的长度,如果它超过MTU值,那么就要对数据包进行分片. 2.UDP首部字段图: (16位源端口号+16位目端口号+16位UDP长度+16位UDP校验和+数据) 3.UD ...

  3. 使用cJSON库解析和构建JSON字符串

    使用cJSON库解析和构建JSON字符串 前言 其实之前的两篇博文已经介绍了json格式和如何使用cJSON库来解析JSON: 使用cJSON库解析JSON JSON简介 当时在MCU平台上使用时,会 ...

  4. RocketMQ 升级到主从切换(DLedger、多副本)实战

    目录 1.RocketMQ DLedger 多副本即主从切换核心配置参数详解 2.搭建主从同步环境 3.主从同步集群升级到DLedger 3.1 部署架构 3.2 升级步骤 3.3 验证消息发送与消息 ...

  5. Elasticsearch从入门到放弃:索引基本使用方法

    前文我们提到,Elasticsearch的数据都存储在索引中,也就是说,索引相当于是MySQL中的数据库.是最基础的概念.今天分享的也是关于索引的一些常用的操作. 创建索引 curl -X PUT & ...

  6. Django入门必知必会操作

    一.Django基础必备三件套 HttpRseponse 内部传入一个字符串参数,返回给浏览器. 在app目录下的views.py添加函数,添加函数之前必须在urls.py添加函数对应关系,否则访问不 ...

  7. 前端之HTML介绍及使用

    一.HTML介绍 1.1 web本质 在pycharm写入一下代码,然后在浏览器地址栏输入地址和端口127.0.0.1:8080,回车,回来运行代码,直接访问客户端发送的内容conn.send(b'& ...

  8. ZooKeeper(四):从TCP数据流到zk内部处理包的转换

    通过前面几篇文章,我们可以从整体上看到zk是如何处理网络数据的宏观架构. 本文我们从细节着手,看一下一个tcp的包是如何转换到内部的数据流处理的. 一.监听用户请求socket 基于NIO的端口监听, ...

  9. SpringCloud的入门学习之概念理解、Eureka服务注册与发现入门

    1.微服务与微服务架构.微服务概念如下所示: 答:微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题.提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面的一个个微服务 ...

  10. 中间件1--dubbo

    DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广 ...