Strust2 搭建一个简单CRUD(增、查、更、删)的操作网页

Struts2实现CRUD(增删改查)Maven版 Struts2实现CRUD(增 删 改 查) Maven版; eclipse直接导入使用; 教程地址:http://blog.youkuaiyun.com/sky_zhangfan/article/details/1896842 立即下载

1、搭建Struts2基本环境

1.1、导入Strust2 Jar包我使用Strust2.3

1.2、配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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">
	<filter>
		<filter-name>Struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>Struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>


</web-app>

2、编写一个Dao类进行数据访问(为了方面直接不进行连接数据库,从Map进行读取)。

package com.splend.struts2.crud;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Splendid
 *
 */
public class Dao {
	
	private static Map<Integer, Employee> emps = new HashMap<Integer, Employee>();

	static {

		emps.put(1001, new Employee(1001, "AA", "aa", "aa@splend.com"));
		emps.put(1002, new Employee(1002, "BB", "bb", "bb@splend.com"));
		emps.put(1003, new Employee(1003, "CC", "cc", "cc@splend.com"));
		emps.put(1004, new Employee(1004, "DD", "dd", "dd@splend.com"));
		emps.put(1005, new Employee(1005, "EE", "ee", "ee@splend.com"));
		emps.put(1006, new Employee(1006, "FF", "ff", "ff@splend.com"));

	}

	public void save(Employee emp) {
		long time = System.currentTimeMillis();
		emp.setEmployeeId(((int) (time))%100+1007);
		emps.put(emp.getEmployeeId(), emp);
	}

	public List<Employee> getEmployees() {
		return new ArrayList<>(emps.values());
	}

	public void delete(Integer employeeId) {
		emps.remove(employeeId);
	}

	public Employee get(Integer empId) {
		return emps.get(empId);
	}

	public void update(Employee emp) {
		emps.put(emp.getEmployeeId(), emp);
	}
}
3、编写一个Employee的JavaBean

Employee.java:

package com.splend.struts2.crud;

public class Employee {
	private Integer employeeId;
	private String firstName;
	private String lastName;
	private String email;

	public Employee() {
	}

	public Employee(Integer employeeId, String firstName, String lastName, String email) {
		super();
		this.employeeId = employeeId;
		this.firstName = firstName;
		this.lastName = lastName;
		this.email = email;
	}

	public Integer getEmployeeId() {
		return employeeId;
	}

	public void setEmployeeId(Integer employeeId) {
		this.employeeId = employeeId;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
}

4、编写EmployeeAction

EmployeeAction.java

package com.splend.struts2.crud;

import java.util.Map;

import org.apache.struts2.interceptor.RequestAware;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;

public class EmployeeAction implements RequestAware, ModelDriven<Employee>, Preparable {

	private Dao dao = new Dao();

	private Employee employee;

	public String edit() {
		return "edit";

	}

	public void prepareEdit() {
		employee = dao.get(employeeId);
	}

	public String update() {
		dao.update(employee);
		return "success";
	}

	public void prepareUpdate() {
		employee = new Employee();
	}

	public String save() {
		dao.save(employee);
		return "success";
	}

	public void prepareSave() {
		employee = new Employee();
	}

	public String delete() {
		dao.delete(employeeId);
		return "success";
	}

	public String list() {
		requset.put("emps", dao.getEmployees());
		return "list";
	}

	private Map<String, Object> requset;

	private Integer employeeId;

	public void setEmployeeId(Integer employeeId) {
		this.employeeId = employeeId;
	}

	/**
	 * 获取Request对象的方式,这里选择实现RequestAware接口。
	 */
	@Override
	public void setRequest(Map<String, Object> request) {
		this.requset = request;

		// ServletActionContext.getRequest()紧耦合的获取方式,获取的是HttpServletRequest对象
		// 获取的是Map<String, Object>对象
		// ActionContext.getContext().get("request");
	}

	/**
	 * 使用ModelDriven把employee对象放到值栈栈顶。
	 */
	@Override
	public Employee getModel() {
		return employee;
	}

	@Override
	public void prepare() throws Exception {
		// TODO Auto-generated method stub
	}

}
5、写一个Emp-list.jsp进行显示用户信息

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!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>

	<s:debug></s:debug>
	<s:form action="emp-save">
		<s:textfield name="firstName" label="FirstName"></s:textfield>
		<s:textfield name="lastName" label="LastName"></s:textfield>
		<s:textfield name="email" label="Email"></s:textfield>
		<s:submit></s:submit>
	</s:form>

	<table cellpadding="10" cellspacing="0" border="1">
		<thead>
			<tr>
				<td>ID</td>
				<td>FirstName</td>
				<td>LastName</td>
				<td>Email</td>
				<td>Edit</td>
				<td>Delete</td>
			</tr>
		</thead>
		<tbody>
			<s:iterator value="#request.emps">
				<tr>
					<td>${employeeId }</td>
					<td>${firstName }</td>
					<td>${lastName }</td>
					<td>${email }</td>
					<td><a href="emp-edit?employeeId=${employeeId }">Edit</td>
					<td><a href="emp-delete?employeeId=${employeeId }">Delete</td>
				</tr>
			</s:iterator>
		</tbody>
	</table>
</body>
</html>
5、写一个Emp-edit.jsp进行编辑和提交

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!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>
	<s:form action="emp-update">
		<s:hidden name="employeeId"></s:hidden>
		<s:textfield name="firstName" label="FirstName"></s:textfield>
		<s:textfield name="lastName" label="LastName"></s:textfield>
		<s:textfield name="email" label="Email"></s:textfield>
		<s:submit></s:submit>
	</s:form>
</body>
</html>

6、src下创建一个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>
	<!-- Overwrite Convention -->

	<package name="default" extends="struts-default" namespace="/">

		<interceptors>
			<interceptor-stack name="splend">
				<interceptor-ref name="paramsPrepareParamsStack">
					<param name="prepare.alwaysInvokePrepare">false</param>
				</interceptor-ref>
			</interceptor-stack>
		</interceptors>

		<default-interceptor-ref name="splend"></default-interceptor-ref>
		<action name="emp-*" class="com.splend.struts2.crud.EmployeeAction"
			method="{1}">
			<result name="success" type="redirectAction">emp-list</result>
			<result name="{1}">/emp-{1}.jsp</result>
		</action>
	</package>
</struts>
7、写一个index.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>
	<a href="emp-list">List All Employees</a>
</body>
</html>
7、项目结构


8、运行index.jsp:




struts2 CRUD Struts2+Mysql实现CURD,stuts2中使用servlet中Request,session,context对象 立即下载

相关推荐

struts2框架模板

struts2框架模板,让初学struts框架的学生迅速搭建好struts2.1框剪的平台

SSH小框架笔记

1.加入spring    --加入jar包    --配置web.xml    --生成applicationContext.xml 2.加入Hibernate   --加入jar包   --配置hibernate.cfg,xml(配置基本的数据库信息  方言 格式化sql  显示sql 数据更新方式 hbm--update)   --编写db.prope

huangpeng713的博客 329

eclipse和mysql+strust2实现excel数据的导入导出完整代码

最近在学习,所里就做了excel对数据的导入导出功能,希望对大家的学习有点用,本人所使用的开发工具是eclipse+mysql+strust,

【Flask】数据的CRUD之增加和查询操作

用session做数据的增删改查操作: 1、创建模型类,生成数据表 #第一步:创建基类 Base=declarative_base(engine) #第二步:定义python类和表的映射 class Person(Base): __tablename__='t_person' #创建表名,最好是t_开头 id=Column(name='id',type_=Integer,primary_key=True,autoincrement=True) name=Column(name='

python全栈 1028

Struts2实现CRUD(增 删 改 查)功能实例代码

CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除)的缩写,它是普通应用程序的缩影。接下来通过本文给大家介绍Struts2实现CRUD(增 删 改 查)功能实例代码,感兴趣的朋友一起看看吧

PCB过孔全介绍

过孔(via)是多层PCB的重要组成部分之一,钻孔的费用通常占PCB制板费用的30%到40%。简单的说来,PCB上的每一个孔都可以称之为过孔。从作用上看,过孔可以分成两类:一是用作各层间的电气连接;二是用作器件的固定或定位。如果从工艺制程上来说,这些过孔一般又分为三类,即盲孔(blind via)、埋孔(buried via)和通孔(through via)。盲孔位于印刷线路板的顶层和底层表面,具

小王的自我修行路 2357

Struts2学习总结(十一):Struts2的CRUD

CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除)的缩写。 如果你熟练的掌握了CRUD,就可以应用某个框架来创建普通的应用程序 示例:创建,读取全部信息,删除,更新 (1)创建一个Employee对象:并实现对象属性的set和get方法。创建有参和无参的构造方法 package com public class Employee {

努力找工作呀 457

无人机芯片模块技术要点分析

恶劣环境下信号稳定性:无人机在恶劣环境下工作时,遥感系统采集的信号往往很不稳定,视频信号处理芯片需要具备强抗干扰能力,能辨别脉冲脉宽为50ns以上、幅度为0V~4.5V的输入信号。这种架构能兼顾强大的运算能力和灵活的接口控制。芯片小型化:麻省理工学院的研究人员已设计出仅20平方毫米的微型芯片,可处理无人机飞行所需的惯性数据和相机图像,为微型无人机的发展奠定了基础。光子集成芯片(PIC) :研究显示,与电子芯片相比,光子计算芯片在延迟、计算容量和能效上都有数量级的提升,有望解决当前无人机系统的计算瓶颈。

YUNZHUO666的博客 1404

前端---js(自学笔记21)(添加删除记录练习,超链接索引问题)

添加删除记录------删除: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > <title>添加删除记录练习</title> <link rel="stylesheet" type="text/css" href="css/delete.css"/> &

ABU_MOlI_ITUI的博客 3259

运算放大器测试方法-输入失调电压

由于运放输入回路的不对称性,在输入端将产生一定的误差信号,从而限制运放信号灵敏度。通常用输入失调电压(VOS)、输入失调电流(Ios)和输入偏置电流(IB)表示。运放有四个主要特征:输入失调特征、开环特征、共模特征及输出特征。其放大倍数较大,由于外界的影响,即使运放的输入端产生较小的输入信号,经过放大,在输出端也会产生较大的误差。为能精确测量其性能,一般采用辅助运放进行测试。下面着重讲了运放的主要参数及如何精确测量这些参数。文中DUT代表被测运放,A代表辅助运放。

weixin_46135931的博客 1万+

四阶龙格库塔方法求解一次常微分方程组

四阶龙格库塔方法求解一次常微分方程组一、写在前面二、四阶龙格库塔方法三、使用四阶龙格库塔方法求解一次常微分方程组 一、写在前面 龙格库塔方法是数值求解常微分非线性方程的有利工具,计算精度较高,通过缩短步进距离和增加阶数可以进一步控制误差范围。工程上较为常用的是四阶龙格库塔算法(R-K4),在计算收敛的情况下往往可以得到比较好的结果。 二、四阶龙格库塔方法 这里简单介绍一下算法的具体实现过程,不做详细的推导。其求解的问题是形如方程: y˙=f(y,t),其中t∈[t0,t1]初值y(t0)=c0 \dot{y

HelloWorldTM的博客 2万+

页面中的删除确认(ajax)、输入框中确认信息是否可用(ajax)的jquery代码

1.页面中的删除确认(ajax) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//D...

weixin_30335575的博客 206

将Windbg附加到软件进程上排查异常闪退的问题

使用Windbg和Process Explorer排查因为内存泄漏导致的软件异常闪退问题。

dvlinker的技术专栏 1万+

REST风格的增删改查(2)

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中

T_P_F的博客 1172

23、资产分散化与有效前沿:投资组合优化的核心策略

本文深入探讨了现代投资组合理论的核心概念,包括分散投资的重要性、均值-方差优化框架以及有效前沿的构建与应用。通过案例分析和数学模型,阐述了如何通过科学方法降低投资组合风险并实现最优风险收益权衡。文章还介绍了实际应用中的求解方法与决策流程,为投资者提供系统的投资组合优化指导。

cc789的博客 114

YOLOv13改进策略【Neck】| CVPR2024 LGAG:大核分组注意力门模块,3×3分组卷积与注意力协同的特征精准融合

本文记录的是利用LGAG 模块改进 YOLOv13 的颈部融合部分。(Large-kernel Grouped Attention Gate)通过3×3分组卷积与注意力机制结合,引导解码器处理特征与跳接特征的精准融合。本文利用模块,通过3×3分组卷积扩大感受野以捕捉更广泛局部空间上下文,同时结合注意力机制生成自适应注意力系数,对YOLOv13中关键目标特征赋予高激活值、抑制冗余背景特征,在特征融合阶段实现全局语义与局部细节的高效结合,减少计算成本的同时提升特征表达能力,增强模型对复杂场景下目标的检测精度与效

Limiiiing的博客 103

SpringMvc下实现delete和put请求

首先,在web.xml中需要创建一个过滤器: HiddenHttpMethodFilter org.springframework.web.filter.HiddenHttpMethodFilter HiddenHttpMethodFilter /* 注意: 这个过滤器必须放在dispatcher之前,不然会报错,功能就是将

记忆碎片 1551

OTG原理讲解

摘要:USB OTG(On-The-Go)是USB 2.0的重要功能,允许设备在主机和从机间动态切换,实现设备间的直接通信。其核心机制是通过ID引脚电平判断角色:Micro-USB中接地为Host,悬空为Device;USB-C则通过CC引脚协商。电路设计需处理ID引脚连接和VBUS电源控制,MCU根据ID状态配置USB控制器模式。典型应用包括手机连接U盘、键盘等外设,极大扩展了移动设备的连接能力。

m0_49476241的博客 3220

SSH---整合案例----删除功能(使用ajax)(6)

1. 需求:在如下的显示页面中,删除一条记录。 2.实现方法之一:在action中使用重定向。 2.1 jsp请求页面。(查询出数据库中所有的员工结果如上。) 发送请求经由struts.xml文件中配置的action到达指定的 action类的指定方法。 <a href="emp-lis...

lsh15846393847的博客 600

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JavaWeb日记——struts2利用不同方式执行删除功能

使用这个之前,你要先懂得 struts2的配置 基础的el语法 action的分配 返回值的回调 一定的ajax和jquery基础 首先你要配置好web.xml,applicationContext-beans.xml,applicationContext.xml,这里不展开说第一种方法比较简单直接在按钮搞个链接,链接上有id参数首先配置struts.xml里的action<!-- method通

饥渴计科极客杰铿的博客 1683

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

用javascript完成简单的添加删除

我创建了一个表格,这个表格可以添加员工的name,email,salary等属性,同时也能删除这些属性,有很详细的注释 代码如下: &lt;!DOCTYPE html&gt; &lt;html&gt;     &lt;head&gt;         &lt;meta charset="utf-8"&gt;         &lt;title&gt;&lt;/title&gt;      

qq_41672008的博客 534

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

struts2中如何实现CRUD操作

一、实现CRUD简单操作的最终结果图 图1-1文件组织结构图 图1-2(index.jsp首页界面,点击list All Employees进入emp-list.jsp界面) 图1-3(emp-edit.jsp修改界面效果图,必须实现回显) 图1-4(emp-list .jsp显示所有雇员记录,并且可以在上方表单中添加雇员) 二、实现CRUD操

li286487166的博客 1139

Struts 2 CRUD教程

Struts 2 CRUD教程 在这个例子里,我们将了解怎么执行创建,读取,升级和删除(CRUD)操作。这里只涉及到前面例子没有涉及到的内容。 下面是执行画面: 可以选择编辑和删除。 下面是文件路径: UserDAOImpl有四种方法执行CRUD操作。package com.vaannila.dao;import java.util.Li

kimlunarove的专栏 1885

基础crud项目(前端部分+总结)

整个暑假都在 Java 课程中度过,期间学习了不少前所未闻的知识。虽然第一次做的 Java 项目还是只有基础的crud,但是“守得云开见月明”,相信在自己的努力下,一切终将美好。

2301_79155661的博客 1255

Struts2_CRUD操作实例

Struts2_CRUD操作实例 Struts2运行流程: 浏览器先发了个请求, 先会到StrutsPrepareAndExecuteFilter的doFilter方法, 然后创建了一个StrutsActionProxy(代理),调用了这个代理的execute方法, StrutsActionProxy里有一个DefaultActionInvocation的引用,调用了De

两岸猿_吴轻舟先生的博客 6300

struts2实现CRUD(增 删 改 查)

CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除) 首先,肯定是要与数据交互的,所以我们先写一个bean类 代码如下: public class Food { private Integer id; private String name; private Double price; public Integer getId() {...

越是憧憬,越要风雨兼程 5989
上一篇: Centos 7 从零搭建nginx+tomcat集群
下一篇: Struts2+Hibernate实现增、删、查、改的简单网页(连接数据库)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值