struts2
霖你唔到
Stay hungry Stay foolish
展开
-
Struts2的概述
Struts2的概述MVCMVC:Model-View-Control(模型-视图-控制器),就是将Web开发的代码分离设计思想。MVC是一个处理页面请求时,用于实现页面代码(HTML+CSS+JavaScript…)和后台代码(Java)分离的设计思想。Struts2Struts2是一个MVC框架既然Struts2是一个MVC框架,那么首先必须要解决页面代码和后台...原创 2018-05-09 00:08:19 · 221 阅读 · 0 评论 -
ContextMap概述
ContextMap概述它是OGNL 上下文对象,是 struts2 中封装数据最大的对象 , 我们一次请求中所有用到的信息都 可以在它里面找到。它是一个 Map结构的对象,其中key是字符串,value是一个Object。OGNL上下文对象是struts2中封装数据最大的一个对象 |--application ...原创 2018-05-11 00:28:02 · 899 阅读 · 1 评论 -
ActionContext对象概述
ActionContext对象概述它是一个工具类,是 struts2 框架提供给我们的,可以让我们调用其中的方法,快速的操作ContextMap。用它操作OGNL 上下文对象,比直接操作ContextMap要方便很多。 ActionContext对象以及和 ContextMap的关系ActionContext就相当于对ContextMap 进行了一次再封装。Action...原创 2018-05-11 00:28:24 · 1397 阅读 · 0 评论 -
获取 ContextMap中的数据
获取 ContextMap中的数据s:debug标签的使用它是一个用于开发阶段的标签,查看我们 OGNL 上下文中内容的标签<%-- 引入标签库 --%> <%@ taglib uri="/struts-tags" prefix="s" %> <%--1、struts2 的 debug标签 它是一个用于开发阶段的标签,查看我们 OGNL ...原创 2018-05-11 00:29:20 · 721 阅读 · 0 评论 -
ValueStack对象概述
ValueStack对象概述ValueStack 是 Struts 的一个接口,字面意义为值栈OgnlValueStack 是 ValueStack 的实现类,客户端发起一个请求 struts2 架构会创建一个action 实例同时创建一个OgnlValueStack 值栈实例, OgnlValueStack贯穿整个 Action 的生命周期。 请求访问的时候会加载三个东西: ...原创 2018-05-11 00:29:51 · 642 阅读 · 0 评论 -
获取 ValueStack中的数据
获取 ValueStack中的数据值栈中都有什么首先我们要明确,值栈中存的都是对象。因为它本质就是一个List,List中只能存对象。 值栈中包含了我们通过调用 push 方法压栈的对象,当前执行的动作了和一个名称为 DefaultTextProvider 的类,是获取struts2的默认资源。默认值栈中的内容如下图: 在我们不操作值栈时,默认的栈顶对象是当前执行...原创 2018-05-11 00:30:12 · 1634 阅读 · 0 评论 -
Struts2标签取值的原理
Struts2标签取值的原理标签取值底层是调用值栈的*findValue()方法*也可以使用OGNL表达式<%-- Struts2标签取值的原理--%><% //先获取值栈 ValueStack vs = ActionContext.getContext().getValueStack(); //标签的取值都是调用值栈的fin...原创 2018-05-11 00:30:53 · 455 阅读 · 0 评论 -
Struts2对EL表达式的改变
Struts2对EL表达式的改变EL表达式回顾EL 表达式的写法:${表达式}。 它是从四大域中,由小到大逐个域搜索,根据名称获取值。只要找到了,就不再继续搜索。 它的原理:使用的是PageContext类中的findValue方法Struts2对 EL表达式的改变Struts2 框架中对EL 表达式做了如下改变: EL表达式原来的搜素顺序:page ...原创 2018-05-12 22:42:57 · 347 阅读 · 0 评论 -
Struts2的iterator标签
Struts2的iterator标签s:iterator:迭代的是值栈中的数据value 属性: 写的ognl表达式var 属性 : 写了:把迭代出来的集合的对象暂时放入ContextMap,迭代完之后删除没写:把迭代出来的集合的对象暂时放入值栈,迭代完之后弹栈写了var属性把迭代出来的集合的对象暂时放入ContextMap,迭代完之后删除<s:ite...原创 2018-05-12 22:43:39 · 183 阅读 · 0 评论 -
struts2中的拦截器
struts2中的拦截器Struts2的拦截器基本概念在Webwork的中文文档的解释为 : 拦截器是动态拦截Action调用的对象。是struts2中的一个核心技术它提供了一种机制 可以使开发者在定义的action执行的前后加入执行的代码,也可以在一个action执行前阻止其执行。也就是说它提供了一种可以提取 action中可重用代码,统一管理和执行的方式。 拦截器...原创 2018-05-12 22:44:14 · 164 阅读 · 0 评论 -
Struts2的自定义拦截器
Struts2的自定义拦截器自定义拦截器有三个方式: 1. 第一种:定义一个类,实现 Interceptor接口 1. 第二种:定义一个类,继承 AbstractInterceptor 1. 第三种:定义一个类,继承 MethodFilterInterceptor继承 AbstractInterceptor要重写intercept方法代码编写一个普通 ja...原创 2018-05-12 22:44:39 · 196 阅读 · 0 评论 -
struts.xml中的拦截器配置解析
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/...原创 2018-05-12 22:45:35 · 1541 阅读 · 1 评论 -
Struts2的拦截器放行的返回值
Struts2的拦截器放行的返回值拦截器的放行方式: invocation.invoke()方法。请看下面的代码: /** * 自定义拦截器 * @author Johnny.Chen * */ public class MyInterceptor extends AbstractInterceptor { @Override public Stri...原创 2018-05-12 22:46:07 · 1508 阅读 · 0 评论 -
OGNL表达式的基本用法
OGNL表达式的基本用法借助 s:property标签输出内容到浏览器s:property的作用写法: <%--导入标签库--%> <%@ taglib uri="/struts-tags" prefix="s" %> <%--要想使用 OGNL 表达式,需要借助 struts2 的标签--%> <s:property...原创 2018-05-11 00:24:21 · 3081 阅读 · 0 评论 -
OGNL表达式概述
OGNL表达式概述什么是 OGNL表达式OGNL的全称是对象图导航语言(Object-Graph Navigation Language),它是一种功能强大的开 源表达式语言,使用这种表达式语言,可以通过某种表达式语法,存取 Java对象的任意属性,调用 Java对象的方法,同时能够自动实现必要的类型转换。如果把表达式看作是一个带有语义的字符串, 那么OGNL 无疑成为了这个...原创 2018-05-11 00:23:42 · 228 阅读 · 0 评论 -
封装集合数据
封装集合数据注意lisi集合提供下标,map提供键在实际的开发中,有些时候我们需要批量插入用户或者批量插入其他的对象,在 Action 中需要 接受到这多个 Action 中封装的对象,然后传递给业务层。那么这个时候就需要将表单的数据封装到 集合中。一般我们通常使用的集合无非是List或者是Map集合。下面就以这两种集合进行数据的封 装的示例演示。 封装到 List动...原创 2018-05-11 00:22:26 · 635 阅读 · 0 评论 -
Struts2的配置流程
Struts2的配置流程从一个请求开始,首先进入web.xml被核心控制器拦截。必须配置核心控制器,拦截所有请求核心控制器拦截请求以后,会读取struts.xml配置文件根据struts.xml配置的请求路径和执行方法的关系去调用业务控制器的方法。Action的方法执行后,返回视图映射为字符串,回到核心控制器核心控制器根据struts.xml的视图映射字符串和视图的路径,跳转回视...原创 2018-05-09 00:09:08 · 160 阅读 · 0 评论 -
Struts2的配置文件加载顺序
Struts2的配置文件加载顺序struts2配置文件说明框架内置配置文件default.properties:用于存储可以Struts2配置的环境参数(静态常量参数)struts-default.xml:用于存储框架默认配置的信息(内置的组件功能都配置在这里)struts-plugin.xml:用于配置插件的配置信息(讲注解插件时,再分析) –自定义配置文件–strut...原创 2018-05-10 23:28:44 · 311 阅读 · 0 评论 -
Struts2的常量(环境参数)
Struts2的常量(环境参数)所谓的struts2常量就是struts2的环境参数。 放在struts2-core-2.3.32.jar配置文件default.properties 文件常量列表struts.configuration=org.apache.struts2.config.DefaultConfiguration : 该属性指定加载 struts2配置文...原创 2018-05-10 23:29:59 · 254 阅读 · 1 评论 -
struts.xml的参数说明
struts.xml的参数说明标签标签:主要的功能用于分模块的。 将Action配置封装,可以在Package中配置多个action需求:现在项目有 两个模块,一个是前端用户模块,一个是后台管理员模块。两个模块都要登录的方法。struts.xml文件namespace:用于指定路径必须包括命名空间的目录<?xml version="1.0" enco...原创 2018-05-10 23:31:02 · 145 阅读 · 0 评论 -
Struts2的请求访问方式
Struts2的请求访问方式问题:以上的代码,每一个请求,就对应一个,那么100个请求,就要配置100个。 这样配置很麻烦。想法:能不能就使用一个接收同一个包所有的请求。答:是可以的。==有两种方式实现。== 1. 通配符 2. 动态方法调用动态方法的调用要注意ico优化 也就是地址栏的访问路径要简洁使用*通配符实现(推荐使用)action的name属性可...原创 2018-05-10 23:35:40 · 1789 阅读 · 0 评论 -
Struts2的一些默认值
Struts2的一些默认值struts.xml的配置文件中 1. action标签中method属性- 默认值是execute1. action标签中的class属性 - 在struts-default.xml中配置了<default-class-ref class="com.opensymphony.xwork2.ActionSupport" /> ...原创 2018-05-10 23:37:31 · 319 阅读 · 0 评论 -
Struts2的结果视图result
Struts2的结果视图resultresult标签作用: 为动作指定结果视图。 属性: name:逻辑视图的名称,对应着动作方法的返回值。默认值是 success。 type:结果类型,指的就是用什么方式转到定义的页面。默认是 dispatcher。 type 的常用取值: dispatcher:(默认值) 使用请求转发,转向一个页面。 redirec...原创 2018-05-10 23:43:14 · 273 阅读 · 0 评论 -
访问Servlet的API的ServletActionContext方式
访问Servlet的API的ServletActionContext方式ServletAPI对象包含了: - request - response - HttpSession - ServletContext使用 ServletActionContextServletActionContext 是 struts2 框架中的类,它里面提供了一些静态方法,可以让我们直接获去...原创 2018-05-10 23:44:16 · 987 阅读 · 0 评论 -
访问Servlet的API的ActionContext方式
访问Servlet的API的ActionContext方式使用 ActionContext 的方式ServletActionContext 中的静态方法里面到底如何获取的 ServletAPI 对象呢?它用的是 ActionContext 类,这个ActionContext是什么呢?今天我们需要知道,它是一个Map结构的对象,具体详情,等到 struts2 第三天再讲。 /...原创 2018-05-10 23:44:59 · 294 阅读 · 0 评论 -
访问Servlet的API的实现接口方式
访问Servlet的API的实现接口方式通过实现接口的方式此种方式,需要我们的Action 类实现一些接口第三种方式: * 采用实现接口的方式,来获取对象能够使用对象的 * 原因: * 是因为在我们的 sayHello 方法执行之前,已经有一些拦截器执行了。 * 通过 struts-default.xml 我们能知道默认的拦截器栈 de...原创 2018-05-10 23:45:18 · 987 阅读 · 0 评论 -
请求参数的属性驱动
请求参数的属性驱动请求参数封装概述封装请求参数就是把我们通过浏览器发送请求时,要传递给服务器的数据封装到指定的对象中。 这个对象一般都是实体类。但是有时就是Action中的一个属性。 也就是说,我们封装请求参数时,可以有实体类,也可以没有。 同时,我们还需要知道,请求参数的封装和请求方式无关。无论get还是post都可以封装。 属性驱动没有实体类要求: ...原创 2018-05-10 23:45:51 · 296 阅读 · 0 评论 -
模型驱动
模型驱动此种封装方式必须按照要求编写代码,要求如下: 1. 动作类必须实现ModelDriven 接口 2. 动作类中需要定义一个模型,并且必须实例化。 3. 动作类提供ModelDriven 接口中抽象方法的实现,返回模型对象。 4. 在实体类中提供与表单name属性取值一致的全局私有变量,并且提供set和get的方法注意: 1. 使用模型驱动时,get/set方法不是必...原创 2018-05-11 00:21:22 · 670 阅读 · 0 评论 -
Struts2常用注解
常用注解@NameSpace出现的位置:它只能出现在 package上或者Action类上。一般情况下都是写在Action 类上。 作用:指定当前Action 中所有动作方法的名称空间。 属性: value:指定名称空间的名称。写法和 xml配置时一致。不指定的话,默认名称空间是”“。@ParentPackage出现的位置: 它只能出现在 package上或...原创 2018-05-12 22:47:39 · 2231 阅读 · 0 评论