
化典成籍 - Struts2
也许有一天能遇上几个能说话的伴,贫穷的,富有的,都算。
WanAkiko.
遇见是一种福气,不遇见也是。
展开
-
Struts2注解式开发常识
随着项目的不断扩大,配置文件也会越来越臃肿,不利于后期开发与维护,此时注解式编程应景而生。注解可以放在某个语法单元的头部,语法单元可以是类、接口、属性、方法以及局部变量等。我们常见的注解有@Override、@Deprecated(已过时)、@SuppressWarings等。注解基础 ① 注解首字母大写且没有结束符号( ; ) ② 注解与类、接口的级别相同,一个注解对应着后台的一个@interface类&原创 2021-01-05 17:01:20 · 293 阅读 · 0 评论 -
Struts2重难点列举以及路径相关的梳理
绝对路径 * 本地绝对路径:带有盘符且省略file协议的路径,例如file:///D:/images/flower.jpg * 网络绝对路径:带有http访问协议的路径,例如http://127.0.0.1/images/grass.jpg相对路径 * 相对路径指根据参照路径的不同,给出路径的实际路径可以发生改变。在保证参照路径不变的情况下根据给出的路径可以实现精原创 2021-01-05 16:49:31 · 175 阅读 · 1 评论 -
Struts2令牌机制的简单实现
Action类package action;import com.opensymphony.xwork2.ActionSupport;public class TokenSysAction extends ActionSupport { private String userName; private String userPwd; public String getUserName() { return userName; } public void setUserName(原创 2021-01-05 13:56:46 · 212 阅读 · 0 评论 -
简介Struts2标签
Struts2提供了非常强大的标签支持(例如类型转换器的数据回显<s:form></s:form>和表单令牌机制<s:token/>),Struts2标准标签可以分为一般标签与UI标签两大类,此外根据标签具体的功能与用法又可将其分为若干子类。Struts2标签引入:<%@ taglib uri="/struts-tags" prefix=“s” %>Struts2标签文档:struts-2.5.26/docs/docs/tag-developers/tag原创 2021-01-05 13:53:10 · 159 阅读 · 0 评论 -
Struts2文件上传与文件下载
Struts2默认拦截器栈中包含一个文件上传拦截器,其底层实现依赖apache的commons.fileUpload,网页表单则可通过Struts2的文件上传拦截器直接上传文件。拦截器将客户端上传的文件自动存放至系统临时目录,Struts2的Action需要做的就是将临时目录中的文件通过IO流转存至指定目录。注意:① 文件上传时需要注意struts2-core-2.3.37.jar\org.apache.struts2\default.properties中的文件上传大小限制② JSP页面文件上传原创 2021-01-04 17:45:49 · 232 阅读 · 0 评论 -
Struts2常见拦截器概念简述
exception:将Action抛出的异常映射到结果,并通过重定向自动处理异常,一般作为最后的拦截器chain:允许当前Action能够使用上一个被执行Action的属性,此拦截器通常配合chain的结果类型一同使用(<result type=“chain”/ ··· ···>)conversionError:将转换错误的信息存储到Action的字段中,包括转换的字符串和参数类型等debugging:为Struts2开发模式下的开发人员提供更多的调式信息fileUpload:此拦截器主原创 2021-01-01 21:55:24 · 123 阅读 · 0 评论 -
Struts2国际化资源文件指定的分类
A. 包范围资源文件(package + 语言简称 + .properties)B. 全局范围资源文件(basename+ 语言简称 + .properties)C. Action范围资源文件(ActionName + 语言简称 + .properties)D. JSP访问指定资源文件注意: ① 当项目中同时存在包范围资源文件与全局范围资源文件时,默认加载时使用全局资源文件,执行Action中的execute()时就近使用包范围资源文件&n原创 2021-01-01 20:36:03 · 174 阅读 · 1 评论 -
Struts2国际化i18n的简单实现
Action类import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport { private String userName; public String getUserName() { return userName; } public void setUserName原创 2021-01-01 13:42:46 · 200 阅读 · 2 评论 -
简单理解Struts2拦截器
拦截器是Struts2的一个重要特性,其定义在struts2-core-x.x.x.jar的struts-default.xml中,Struts2大多数核心功能的实现基于拦截器。拦截器可以在执行Action之前抓取用户请求以及在Action执行之后抓取向用户发送的响应,简言之拦截器在Action执行前后均会执行,可对Action的功能进行增强。例如一般情况下,用户在打开某个页面前被要求登录,否则无法对资源进行访问,这就是拦截器中的权限拦截器在起作用。Struts2中有许多内置拦截器(共35个,默认开启.原创 2020-12-30 15:39:19 · 350 阅读 · 0 评论 -
简单实现Struts2的权限拦截器
Action请求类package action;public class SystemAction { public String execute() { return "success"; } }自定义拦截器package interceptors;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymph原创 2020-12-30 15:20:45 · 181 阅读 · 0 评论 -
你一定能看懂的Action类的执行原理和顺序!
<1> 类型转换 类型转换失败是在Action调用相应属性的setXxx()之前发生的,类型转换失败不影响程序的运行。<2> setXxx 无论类型转换是否成功属性的setXxx()都会被执行,且在类型转换失败时对应属性的值会被设置成null。<3> 数据验证 &nb原创 2020-12-30 13:05:31 · 522 阅读 · 0 评论 -
Struts2编码实现数据验证 & XML配置实现数据验证
(一) 编码实现数据验证 A. 对Action中所有方法执行前的验证(页面能够正确访问但指定方法并不执行,控制台无测试语句输出) B. 对Action中指定方法执行前的验证(验证指定方法的执行,控制台可见测试语句输出)(二) 基于XML配置实现输入数据验证 A. 对Action中所有方法执行前的验证  原创 2020-12-30 12:23:04 · 237 阅读 · 0 评论 -
Struts2类型转换
类型转换Struts2的struts-default.xml中定义了内置类型转换器,转换器可以将表单中输入的文本数据转换为相应的基本数据类型。常用数据类型均可由String转换为相对应的类型:int(或Integer)、long(或Long)、float(或Float)、double(或Double)、char(或Character)、boolean(或Boolean)Date(yyyy-MM–dd 或 yyyy-MM-dd HH:mm:ss)、数组(多个同name属性时兼顾一个参数多个值)、集合原创 2020-12-29 18:29:24 · 319 阅读 · 0 评论 -
Struts2请求参数接收
<属性驱动>:将需要用于接收的参数设置为Action的成员属性,仅作了解。<域驱动>:在页面中利用生成的对象属性调用属性,例如:student.name,student.age,··· 执行原理:程序运行时Struts2会在执行的Action中默认生成一个指定的空对象,该对象会被立即初始化(属性值全为默认空值),紧接着会按照先基本数据类型后引用数据类型的顺序执行实体的各setXXX(),最后返回填充数据的实体。 &nbs原创 2020-12-29 17:49:29 · 237 阅读 · 2 评论 -
完成Struts2中的方法动态调用
概念简述:动态调用方法即在同一个Action中编写多个按需实现的方法,并在测试时根据 !方法名 或 通配符(推荐) 对指定的方法进行调用,动态调用方法既符合我们的编程思想又能够规避一个Action对应一个方法的局限。常见的动态方法调用(Dannii-Struts2动态方法调用的三种方式): ① 指定action标签的method属性 ② 访问地址栏的Action + !需要调用的方法名  转载 2020-12-29 17:37:03 · 184 阅读 · 0 评论 -
Struts2中 List 和 Map 的创建与遍历以及集合投影
List的创建与遍历Map的创建与遍历集合元素判断集合投影(仅获取集合元素中对象的某一个属性)集合查询原创 2020-12-29 17:25:06 · 207 阅读 · 0 评论 -
简单了解Struts2中的值栈
值栈对象用户提交Action请求后系统当即创建Action实例和值栈对象,Struts2中的值栈ValueStack是一个接口,其实现类为OgnlValueStack。其中最重要的两个属性是CompoundRoot root(本质是ArrayList,值栈操作时视其为栈)和transient Map<String, Object> context(OgnlValueStack将创建的map的引用传递给context)。Tips:transient关键字可以将一个类的指定属性忽略序列化传输..原创 2020-12-29 17:19:20 · 188 阅读 · 0 评论 -
简单了解Struts2中引入的OGNL表达式
OGNL全称Object-Graph Navigation Language,它是一种功能强大的表达式语言,也是一个第三方的开源项目,其出现早于EL表达式。其本身与Struts2无关,Struts框架使用OGNL进行表达式的计算工作。Struts2通过简单一致的表达式语法以存取对象的任意属性和调用对象方法,以及遍历整个对象的结构图和实现字段类型转化等功能。OGNL操作属性和方法(示例)标签引入:<%@ taglib uri="/struts-tags" prefix=“s” %>..原创 2020-12-29 17:06:05 · 172 阅读 · 0 评论 -
Struts2兼容日期类型转换器(yyyy-MM-dd 或 yyyy/MM/dd 或 yyyyMMdd)
我想对自己说:既然已经开始了,那就安安静静地善终叭。转载出处:动力节点 - SSH从入门到精通package converter;import java.util.Date;import java.text.SimpleDateFormat;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.conversion.TypeConversionException;import com.open转载 2020-12-29 07:40:37 · 207 阅读 · 0 评论 -
Struts2的Action类获取ServletAPI
Struts2中对HttpServletRequest、HttpSession、ServletContext进行了封装解耦,并构造了三个Map对象用于替换列举的对象。获取方式:① 通过ActionContext获取(以下获取方式仅获取ServletAPI的域空间,并非真正具体的ServletAPI) 向Request域空间中放入数据:ActionContext.getContext().put(“req”, “req_value”); &nb原创 2020-12-16 13:59:59 · 145 阅读 · 0 评论 -
MyEclipse8.5 搭载 jdk1.8 和 Tomcat7.0
具体步骤:① 打开MyEclipse,去到Window的Preferences中模糊搜索Tomcat② 找到开发工具中所支持的最高Tomcat版本,将其Tomcat server设为Enable③ 设置完成后浏览本机的Tomcat安装位置,找到bin的上一层目录后点击确定,路径引入完成④ 再次来到已选择的Tomcat 6.x下找到JDK,点击右上角的Add引入本机已安装的Java运行环境⑤ JRE选择完成后的示例图,此处错误可以忽略,原因是电脑的MyEclipse已经成功绑定上了jdk,转载 2020-12-13 12:18:45 · 2012 阅读 · 0 评论 -
解决MyEclipse中xml文件无标签提示的问题
具体步骤:① 为项目导入 struts 依赖 jar 包后找到项目库文件中的Referenced Libraries / struts2-core-2.3.xx.jar / struts-2.3.dtd② 去桌面新建一个 txt 文件,将 struts-2.3.dtd 中的内容复制到该文件中保存,也可以将该文件剪切至其它位置,示例将该文件保存至D盘③ 回到MyEclipse找到工具栏并依次进入Windows / Preferences,在搜索栏中输入xml并选择MyEclipse / File原创 2020-12-12 17:38:15 · 410 阅读 · 0 评论 -
Struts2运行环境搭建 - 注册Struts2启动项
编辑项目的 web.xml 文件方法一:方法二(常用):原创 2020-12-12 12:05:43 · 181 阅读 · 0 评论 -
代理模式 - 实现有接口的CGLIB动态代理
主业务接口:/** * 主业务接口:本接口中的方法将会被代理增强 * @author WanAkiko * */public interface ISomeService { String doFirst(); void doSecond(); }主业务接口实现类:import service.ISomeService;/** * 目标类:本类将会被代理类增强 * @author WanAkiko * */public class SomeServiceImpl原创 2020-12-07 14:41:18 · 755 阅读 · 0 评论 -
代理模式 - 实现无接口的CGLIB动态代理
未实现任何接口的目标类/** * 目标类:未实现任何接口 * @author WanAkiko * */public class SomeService { public String doFirst() { System.out.println("执行目标类的doFirst方法!"); return "WanAkiko"; } public void doSecond() { System.out.println("执行目标类的doSecond方法!"); } }原创 2020-12-07 11:52:57 · 435 阅读 · 0 评论 -
SSH前言 - 动态代理的简单实现
动态代理:程序运行后代理类与目标类之间的代理关系随之确定,动态代理一般仅具备代理对象。接口类:/** * 主业务接口:本接口中的方法将会被代理增强 * @author WanAkiko * */public interface ISomeService { String doFirst(); void doSecond(); }接口实现类:import service.ISomeService;/** * 目标类:本类将会被代理类增强 * @author WanAk原创 2020-12-06 21:44:23 · 200 阅读 · 0 评论 -
简述 SSH 静态 / 动态代理模式
简述:代理模式即为其它对象提供一种代理以控制该对象的访问。在某些情况下一个对象不适合或不能直接引用另一个对象,而代理对象可以在客户类和目标对象之间起到中介的作用(强化目标对象),前提是代理类和目标类必须实现同一个接口。注意:使用代理对象是为了在不修改目标对象的基础上增强主业务逻辑,客户类真正想要访问的对象是目标对象,而实际上客户类访问的对象是代理对象。静态代理:代理类与目标类之间的代理关系在程序运行之前既定,静态代理一般具备代理类。动态代理:程序运行后代理类与目标类之间的代理关系随之确定,动态代原创 2020-12-06 20:42:46 · 401 阅读 · 0 评论 -
SSH前言 - 静态代理的简单实现
静态代理:代理类与目标类之间的代理关系在程序运行之前既定,静态代理一般具备代理类。接口类:/** * 主业务接口:本接口中的方法将会被代理增强 * @author WanAkiko * */public interface ISomeService { String doFirst(); void doSecond(); }接口实现类:import service.ISomeService;/** * 目标类:本类将会被代理类增强 * @author WanAkik原创 2020-12-06 20:37:44 · 109 阅读 · 0 评论