struts2标签

[ SSH框架 ] Struts2框架学习之三(OGNL和ValueStack值栈学习)

泄露秘密 提交于 2020-04-02 05:24:49
一、OGNL概述 1.1 什么是OGNL   OGNL的全称是对象图导航语言( object-graph Navigation Language),它是一种功能强大的开源表达式语言,使用这种表达式语言,可以通过某种表达式语法,存取Java对象的任意属性,调用Java对象的方法,同时能够自动实现必要的类型转换。如果把表达式看作是一个带有语义的字符串,那么OGNL无疑成为了这个语义字符串与Java对象之间沟通的桥梁。 1.2 OGNL的作用    Struts2默认的表达式语言就是OGNL,它具有以下特点:   ● 支持对象方法调用。例如: objName. methodName( )。   ● 支持类静态方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[ 方法名|值名 ]。例如:@ java.lang.String@format("foo%s","bar")。   ● 支持赋值操作和表达式串联,例如: price=100, discount=0.8, calculateP rice( ),在方法中进行乘法计算会返回80   ● 访问OGNL上下文( OGNL context)和 ActionContext。   ● 操作集合对象。 1.3 OGNL的要素 了解了什么是 OGNL及其特点后,接下来, 分析一下 OGNL的结构。OGNL的操作实际上就是 围绕着

Struts2之Json插件的使用

☆樱花仙子☆ 提交于 2020-04-01 05:14:57
时间:2017-1-15 02:27 ——普通方式处理异步请求: ServletActionContext.getResponse().getWriter().print("aa"); ——Struts2中怎样处理异步请求 1、步骤: 1)导入json插件包:struts2-json-plugin-2.3.15.1.jar 这个jar包中有一个struts-plugin.xml,其中的package继承了struts-default.xml: <package name="json-default" extends="struts-default"> 2)继承json-default 以后struts.xml继承json-default即可: <package name="default" namespace="/" extends="json-default"> 3)定义视图 在json的jar包中定义了一个视图: <result-types> <result-type name="json" class="org.apache.struts2.json.JSONResult"/> </result-types> 在struts.xml中设置视图: <action name="AjaxDemo2" class="com.wyc.action.AjaxDemo2Action">

struts2 + ajax(从后台获取json格式的数据返回到前端,然后前端用jquery对json数据进行解析)

风格不统一 提交于 2020-03-23 13:47:38
Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过 插件 实现),框架的整合只是使得JSON的创建变得异常简单,并且可以简单的融入到Struts2框架中,当然这只是在我们需要JSON的时候才会显得流光溢彩。 首先不谈Struts2的原生支持,我们自己写一个ajax示例,使用异步请求,直接请求action动作: InfoAction.java package cn.codeplus.action;import com.opensymphony.xwork2.ActionSupport;publicclass InfoAction extends ActionSupport { privatestaticfinallong serialVersionUID =1359090410097337654L; public String loadInfo() { return SUCCESS; }} InfoAction仅仅是简单的返回"success"。 index.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>获取<

Struts2之ajax初析

不羁岁月 提交于 2020-03-20 20:07:36
Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过 插件 实现),框架的整合只是使得JSON的创建变得异常简单,并且可以简单的融入到Struts2框架中,当然这只是在我们需要JSON的时候才会显得流光溢彩。 首先不谈Struts2的原生支持,我们自己写一个ajax示例,使用异步请求,直接请求action动作: InfoAction.java package cn.codeplus.action; import com.opensymphony.xwork2.ActionSupport; public class InfoAction extends ActionSupport { private static final long serialVersionUID = 1359090410097337654L; public String loadInfo() { return SUCCESS; } } InfoAction仅仅是简单的返回"success"。 index.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>">

(一)Struts2入门——HelloWorld

▼魔方 西西 提交于 2020-03-08 21:38:37
一、Struts2 概述 Struts2 是一个用来开发 MVC 应用程序的框架。 它提供了 Web 应用程序开发过程中的一些常见问题的解决方案: 对来自用户的输入数据进行合法性验证 统一的布局 可扩展性 国际化和本地化 支持 Ajax 表单的重复提交 文件的上传下载 …… Struts2 VS Struts1 在体系结构方面更优秀: 类更少, 更高效: 在 Struts2 中无需使用 “ActionForm” 来封装请求参数. 扩展更容易: Struts2 通过拦截器完成了框架的大部分工作. 在 Struts2 中插入一个拦截器对象相当简便易行. 更容易测试: 即使不使用浏览器也可以对基于 Struts2 的应用进行测试 从 Struts1 升级到 Struts2 Struts2 从本质上讲已不是从 Struts1 扩展而来的, 说它是一个换了品牌标签的 WebWork 更合适 从 Struts1 升级到 Struts2: Struts1 里使用 ActionServlet 作为控制器; Struts2 使用了一个过滤器作为控制器 Struts1 中每个 HTML 表单都对应一个 ActionForm 实例. Struts2 中, HTML 表单将被直接映射到一个 POJO. Struts1 的验证逻辑编写在 ActionForm 中; Struts2 中的验证逻辑编写在

struts2入门

霸气de小男生 提交于 2020-03-08 04:22:46
文章目录 struts2介绍 概念 使用优势 封装好的功能点 sturts1和struts2 struts2搭建 下载地址 新建web项目 导入jar包 书写Action类 新建xml并导入约束 导入约束 新建hello.jsp 将struts2核心过滤器配置到web.xml[最重要的一步 项目中没自动创建xml解决方法 给eclipse配置tomcat 运行结果 struts2访问流程 struts2架构 AOP编程思想 应用于servlet 应用于拦截器Interceptor 配置详解 struts.xml详解 struts2常量配置 struts2默认常量配置位置 修改struts2常量配置(加载顺序为序号顺序 方式一:在struts.xml中修改(推荐方法) 方式二:新建struts.properties修改 方式三:在web.xml中修改 常量说明 struts2配置的进阶 动态方法调用 方式一:配置动态方法调用常量 方式二:通配符方式(推荐方法 struts2的默认配置 action的创建方式 方式一:创建一个类,可以是POJO 方式二:实现一个接口Action 方式三:继承一个类ActionSupport(最常用) struts2介绍 概念 前端框架,用于替代servlet处理访问服务器的请求。 使用优势 来自于https://www.w3cschool.cn

[摘]Struts2 文件上传 之 文件类型 allowedTypes(包括office200...

两盒软妹~` 提交于 2020-03-07 17:18:29
Html代码 '.a' : 'application/octet-stream', '.ai' : 'application/postscript', '.aif' : 'audio/x-aiff', '.aifc' : 'audio/x-aiff', '.aiff' : 'audio/x-aiff', '.au' : 'audio/basic', '.avi' : 'video/x-msvideo', '.bat' : 'text/plain', '.bcpio' : 'application/x-bcpio', '.bin' : 'application/octet-stream', '.bmp' : 'image/x-ms-bmp', '.c' : 'text/plain', # Duplicates :( '.cdf' : 'application/x-cdf', '.cdf' : 'application/x-netcdf', '.cpio' : 'application/x-cpio', '.csh' : 'application/x-csh', '.css' : 'text/css', '.dll' : 'application/octet-stream', '.doc' : 'application/msword', '.dot' : 'application

Struts2的声明式异常处理

情到浓时终转凉″ 提交于 2020-03-06 13:45:17
在struts2应用程序中你还在使用try catch语句来捕获异常么?如果是这样的,那你OUT啦!struts2支持声明式异常处理,可以再Action中直接抛出异常而交给struts2来处理,当然需要我们在xml文件中配置,由于抛出同样的异常的处理方法通常都一样,所以如果能在xml中配置全局异常,将会使得开发便捷性大大提高。 以前的异常捕获可能是这样的: ? /** * 执行更新 * * @return */ public String update() { Article article = new Article(); article.setContent(content); article.setTitle(title); article.setId(id); try { articleService.update(article); return SUCCESS; } catch (SQLException e) { e.printStackTrace(); return ERROR; } catch (InvalidInputException e) { e.printStackTrace(); System.out.println( "输入非法" ); return ERROR; } } 这种方式是完全的手动处理异常,一来不够简洁明快,而且还不容易维护

Struts2(五)——核心拦截器

∥☆過路亽.° 提交于 2020-03-05 06:54:58
Struts 框架一共为我们提供了 35 个拦截器,其中默认的拦截器有 18 个,框架访问 action 的异常处理,配置信息处理,转发重定向选择,上传等等等等,都是这 18 个拦截器中设置的,起着非比寻常的作用。而这些在 struts-default.xml 文件中都有设置,看一下吧: [html] view plain copy print ? < interceptor-stack name= "defaultStack" > < interceptor-ref name= "exception" /> < interceptor-ref name= "alias" /> < interceptor-ref name= "servletConfig" /> < interceptor-ref name= "i18n" /> < interceptor-ref name= "prepare" /> < interceptor-ref name= "chain" /> < interceptor-ref name= "debugging" /> < interceptor-ref name= "scopedModelDriven" /> < interceptor-ref name= "modelDriven" /> < interceptor-ref name=

OGNL, JSTL, STRUTS2标签中符号#,$,%的用法示例

℡╲_俬逩灬. 提交于 2020-03-02 11:05:18
取Session中的值 <c:out value="${sessionScope.user.userId}"></c:out><br> <c:out value="${user.userLoginName}"></c:out><br> <s:property value="#session.user.userId"/><br> ${session.user.userId}<br> ${sessionScope.user.userId}<br> 基本语法 一、EL简介 1.语法结构 ${expression} 2.[]与.运算符 EL 提供.和[]两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如: ${sessionScope.user[data]}中data 是一个变量 3.变量 EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。 假如途中找到username,就直接回传