struts2常用标签详解

struts2常用标签详解
struts2常用标签详解

struts2标签详解

A:

-----超链接,类似于html里的

-----执行一个view里面的一个action

-----如果action的errors有值那么显示出来

-----如果action的message有值那么显示出来

-----添加一个值到list,类似于list.add();

-----自动完成标签的内容,这个是ajax

B:

-----类似于struts1.x中的,JavaBean的值

C:

-----复选框

-----多选框

-----下拉框

-----图像符号

D:

-----获取日期格式

-----日期输入框

-----显示错误信息

-----表示一个块,类似于html的

-----双下拉框

E:

asdfasdf

-----这3个标签一起使用,表示条件判断

F:

-----显示文件错误信息

-----文件上传

-----获取相应form的值

G:

----和标签一起使用

H:

-----在里使用,表示头文件结束

-----隐藏值

I:

-----加载资源包到值堆栈

-----包含一个输出,servlet或jsp页面

-----获取form的一个输入

-----用于遍历集合

L:

-----只读的标签

M:

-----合并遍历集合出来的值

O:

-----获取标签组

-----左右选择框

P:

-----为其他标签提供参数

-----密码输入框

-----得到'value'的属性

-----value的值push到栈中,从而使property标签的能够获取value的属性

R:

-----单选按钮

-----重置按钮

S:

-----单选框

-----赋予变量一个特定范围内的值

-----通过属性给list分类

-----提交按钮

-----为遍历集合输出子集

T:

-----表格框

-----表格

-----I18n文本信息

-----文本域输入框

-----文本输入框

-----拦截器

-----树

-----树的结构

U:

-----多选择框-----创建url

Struts2常用的Ajax标签

Struts2为了简化Ajax过程,提供了一些常用的Ajax标签,对于一些更复杂的Ajax通信过程,我们可以使用JSON插件来实现。

1,div标签

div标签在页面上生成一个div元素,但这个div元素的内容不是静态内容,而是从服务器获取的内容。必须为该div标签指定一个href属性,这个href属性必须是一个action,该action负责生成该div元素的内容。还可以指定该div标签生成的div元素以固定的频率来更新自身的内容,可以指定如下两个属性:updateFreq:指定更新div的时间间隔,单位是ms,如果不指定,则只在页面加载时更新该div的内容。delay:指定更新div内容的时间延迟,单位是ms,如果没有指定updateFreq属性,则该属性没有意义。如果服务器包含了JavaScript代码,且希望在本页面内执行服务器响应的JavaScript代码,则可以为该div 标签标签指定executeScripts="true"。

例子的页面代码如下:

<%@ page contentType="text/html;charset=GBK" language="java" %>

<%@ taglib prefix="s" uri="/struts-tags" %>

远程Div

仅一次获取服务器内容的Div

theme="ajax"

cssStyle="border: 1px solid black;background-color:#dddddd;

width:300px;height:40px;padding-top:8px;padding-left:20px"

href="%{rd}">

初始化文本

动态更新内容的Div,每隔1s刷新一次(通过指定updateFreq="1000")

使用indicator(通过指定indicator="indicator")

theme="ajax"

cssStyle="border: 1px solid black;background-color:#dddddd;

width:300px;height:40px;padding-top:8px;padding-left:20px"

href="%{rd}"

updateFreq="1000"

indicator="indicator">

初始化文本


3s之后才开始更新(通过指定delay="3000")

指定与服务器交互出错的提示(通过指定errorText属性)

指定与服务器交互过程中的提示(通过指定loadText属性)

theme="ajax"

cssStyle="border: 1px solid black;background-color:#dddddd;

width:300px;height:40px;padding-top:8px;padding-left:20px"

href="%{rd}" //使用变量来指定URL

updateFreq="1000"

delay="3000"

errorText="加载服务器数据出错"

loadingText="正在加载服务器内容">

初始化文本

指定显示系统出错提示(通过指定showErrorTransportText="true")

theme="ajax"

cssStyle="border: 1px solid black;background-color:#dddddd;

width:300px;height:40px;padding-top:8px;padding-left:20px"

href="/AjaxNoUrl.jsp"

updateFreq="1000"

showErrorTransportText="true"

loadingText="正在加载服务器内容">

初始化文本

执行服务器脚本(通过指定executeScripts="true")

theme="ajax"

cssStyle="border: 1px solid black;background-color:#dddddd;

width:300px;height:40px;padding-top:8px;padding-left:20px"

href="%{test}"

updateFreq="9000"

executeScripts="true"

loadingText="正在加载服务器内容">

初始化文本

random.action的处理Action和JSP页面内容如下:

public class RandomAction implements Action {

private String data;

public String getRdmStr() {

String result = String.valueOf(Math.round(Math.random() * 10000));

return data != null && !data.equals("") ? data + result : result;

}

public void setData(String data) {

this.data = data;

}

public String getData() {

return this.data;

}

public String execute() {

return SUCCESS;

}

}

<%@ page contentType="text/html;charset=GBK" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %>

<%

request.setAttribute("decorator", "none");

response.setHeader("Cache-Control","no-cache"); //HTTP 1.1

response.setHeader("Pragma","no-cache"); //HTTP 1.0

response.setDateHeader ("Expires", 0); //prevents caching at the proxy server System.out.println("----------");

%>

服务器返回的随机数字是:

第二个Action是直接的JSP页面,页面包含JavaScript代码,页面内容如下:

<%@ page contentType="text/html;charset=GBK" language="java" %>

<%

request.setAttribute("decorator", "none");

response.setHeader("Cache-Control","no-cache"); //HTTP 1.1

response.setHeader("Pragma","no-cache"); //HTTP 1.0

response.setDateHeader ("Expires", 0); //prevents caching at the proxy server

%>

轻量级J2EE企业应用实战

如果我们不需要该div调用远程Java方法,而是定期执行某个JavaScript函数,则可以为该div标签指定一个handler属性,该属性的值为该JavaScript函数。如下例子JSP页面代码:

<%@ page contentType="text/html;charset=GBK" language="java" %>

<%@ taglib prefix="s" uri="/struts-tags" %>

远程Div

直接使用本页面的JS函数,不再调用远程服务器

theme="ajax"

cssStyle="border: 1px solid black;background-color:#dddddd;

width:300px;height:40px;padding-top:8px;padding-left:20px"

href="%{rd}" //此时的href属性无效

updateFreq="2000"

handler="handler">

初始化文本

此外,div 标签还可将一个表单里包含的表单域转换成对应的请求参数,并且把这些请求参数发送给远程服务器。为了让一个div 标签发送表单里包含的表单域,可以为该div 标签指定如下属性:

fromId :该属性的属性值为一个表单元素的ID ,表明该div 标签会把该表单里的表单域作为参数来发送。

为了通过在JavaScript 代码中手动控制div 标签启动自动更新,关闭自动更新,则可以为该div 标签指定如下两个属性:

startTimerListenTopics :该属性设置一个监听的事件主题,当有Struts2组件向该主题发布事件时,该div 标签的计时器被启动。

stopTimerListenTopics :该属性设置一个监听的事件主题,当有Struts2组件向该主题发布事件时,该div 标签的计时器被关闭。

例子的JSP 页面代码如下:

<%@ page contentType="text/html;charset=GBK" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %>

远程Div


使用pub-sub机制(通过指定listenTopics等属性)

发送表单请求参数(通过指定formId="form")

theme="ajax"

cssStyle="border: 1px solid black;background-color:#dddddd;

width:300px;height:40px;padding-top:8px;padding-left:20px"

href="%{rd}"

loadingText="正在加载服务器内容"

listenTopics="/refresh" //加载服务器响应

startTimerListenTopics="/startTimer" //当有startTimer事件发布时启动计数器

stopTimerListenTopics="/stopTimer" //当有stopTimer事件发布是停止计数器

updateFreq="9000"

autoStart="true" //加载此页面时自动启动计数器

formId="form" //指定表单的ID

notifyTopics="/after"> //指定主题名为after,其它的事件都会发布到此主题下

初始化文本

2,a和submit标签

a和submit标签的作用几乎完全一样,除了外在的表现不一样(a标签生成一个超链接,submit标签生成一个提交按钮)。它们都是用于向服务器发送异步请求,并将服务器响应加载在指定的HTML元素中,

href:指定单击这两个标签生成的超链接,按钮时发送请求的URL。

targets:该属性指定HTML元素的ID,该属性设置服务器响应来加载到该属性指定的几个HTML元素上。

executeScripts:设置是否执行远程的JavaScript代码。

handler:指定使用本页面的JavaScript函数作为按钮,超链接的单击事件处理函数,如果指定了此属性,则href属性无效。

此外,这两个标签也支持notifyTopics属性,把load事件发布到指定主题。

loadingText:当服务器响应还未成功装载时,targets属性指定的HTML标签显示的内容。errorText:当与服务器交互之间存在错误时,targets属性指定的HTML标签显示的内容。form:设置将form属性指定的表单的表单域作为请求参数发送到服务器。

下面是a标签的例子JSP页面代码:

<%@ page contentType="text/html;charset=GBK" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %>

远程链结

Div 1


Div 2



同时修改Div1和Div2的内容

且将事件发布到/after主题(指定notifyTopics属性)

theme="ajax"

href="%{ajaxTest}"

indicator="indicator"

targets="t1,t2" notifyTopics="/after">修改Div1和Div2内容


指定服务期返回失败时的错误提示(指定errorText属性)

因为系统中AjaxNoUrl.jsp页面不存在,肯定出错!

theme="ajax"

href="/AjaxNoUrl.jsp"

errorText="系统服务器返回信息出错"

targets="t1">修改'Div 1'内容,使用自定义出错提示


指定系统加载中的提示信息(指定loadingText属性)

theme="ajax"

href="%{ajaxTest}"

loadingText="系统正在加载中"

targets="t1">修改'Div 1'内容,使用自定义加载信息


执行远程JavaScript代码(指定executeScripts=true属性)

theme="ajax"

href="%{test3}"

executeScripts="true"

targets="t2">接执行远程JavaScript


通过使用自定义JavaScript函数来实现Ajax交互(指定handle属性)

theme="ajax"

href="%{ajaxTest}"

handler="handler"

targets="t2">使用自定义的处理函数

提交表单请求(通过指定formId属性)

theme="ajax"

href="%{ajaxTest}"

targets="t2"

formId="form">Div 2 会显示在上面文本框中输入的内容

Action和JSP页面代码如下:

public class AjaxTestAction implements Action, Serializable {

private static int counter = 0;

private String data;

public long getServerTime()

{

return System.currentTimeMillis();

}

public int getCount()

{

return ++counter;

}

public String getData()

{

return "服务器提示:" + data;

}

public void setData(String data)

{

this.data = data;

}

public String execute() throws Exception

{

return SUCCESS;

}

}

JSP页面:

<%@ page contentType="text/html;charset=GBK" language="java" %>

<%@ taglib prefix="s" uri="/struts-tags" %>

<%

request.setAttribute("decorator", "none");

response.setHeader("Cache-Control","no-cache"); //HTTP 1.1

response.setHeader("Pragma","no-cache"); //HTTP 1.0

response.setDateHeader ("Expires", 0); //prevents caching at the proxy server

%>

服务器计数器:

当前时间是:

服务器返回的提示是:

JSP页面2:

<%@ page contentType="text/html;charset=GBK" language="java" %>

<%

request.setAttribute("decorator", "none");

response.setHeader("Cache-Control","no-cache"); //HTTP 1.1

response.setHeader("Pragma","no-cache"); //HTTP 1.0

response.setDateHeader ("Expires", 0); //prevents caching at the proxy server

%>

轻量级J2EE企业应用实战

下面是使用submit标签的例子代码:

<%@ page contentType="text/html;charset=GBK" language="java" %>

<%@ taglib prefix="s" uri="/struts-tags" %>

远程按钮

将被改变的结果< /div>

简单的提交按钮,使用indicator


简单的提交按钮,使用pub-sub事件模型(设置notifyTopics=/after属性)

SCME_STRUTS2试卷

--------------------------------------装--------------------------------------订------------------------------线---------------------------------------- **学院课程考试试卷 课程名称:《使用Struts2开发基于MVC设计模式的企业级应用》(A)卷 年级:班级: 姓名:_______________ 学号:_________________ 考试(考查) 闭卷 选择题(每题2分,共计100分) 1.在控制器类中一般需要添加相应属性的( A )和(C )。(选两项) A.setter方法 B.as方法 C.getter方法 D.is方法 2.业务控制器需要在( B )配置文件中进行配置 A.web.xml B.struts.xml C.struts2.xml D.webwork.xml 3.不属于Struts 2表单标签库的是( D )。 A. B. C. D.标签的property属性指定字段的名字,对应ActionForm bean中的一个属性,代码如下: 的对应的userForm bean属性 private String login_Name; public String getLogin_Name() { return login_Name; } public void setLogin_Name(String login_Name) { this.login_Name = login_Name; } 3,:生成HTML标签,使用方法与相同。 启用 停用 4,:生成HTML 5.在JSP页面中可以通过Struts 2提供的___D________标签来输出国际化信息。D A. B. C. D. 6.资源文件的后缀名为____D_______。D

Struts2试题

Struts2试题 1.struts2的执行流程? 客户端提交一个HttpServletRequest请求(action或JSP页面) 请求被提交到一系列Filter过滤器,如ActionCleanUp和FiterDispatcher等 FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器询问ActionMapper是否需要调用某个action来处理 如果ActonMapper据诶的那个需要调用某个A传统,FilterDispatcher则把请求教到ActionProxy,由其进行处理 ActionProxy通过Configuration Manager询问框架配置文件,找到需要调用的Action类ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用action Action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Interceptor拦截器最后ActionInvocation负责根据struts配置文件中配置的result元素,找到与返回值对应的result 2.struts2的web里需要配置什么? 1. 2. 3.struts2 4. 5.org.apache.struts2.dispatcher.FilterDispatcher 6. 7. 8. 9.

10.struts2 11./* 12. 3.struts.xml文件哪个常量可以实现不用重新启动服务就可以得到反馈? 4.struts中的package的作用是什么?namespace可以为空吗?如果namespace为空会意味着什么呢? 标识 可以、 Timmer 如果没写,说明该包为默认空间只要敲index没有精确对应的package都交给namespackage 如果还没有就崩溃 5.Action的实现通集成常用那种方法? 一种是直接实现自己的Action 另一种是实现Action的接口 继承ActionSupport 6.路径设置用什么路径,绝对还是相对? 都可以 7.通配符有几种?要遵循什么原则? {1} 方法名 8.Action的属性?

Struts2中防止表单的重复提交

Struts2中防止表单的重复提交 在学习编程的过程中,我觉得不止要获得课本的知识, 更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请搜索疯狂Java; struts2的token令牌 1、javaweb控制表单重复提交 (1)在jsp页面上使用隐藏域 这样做,每次正常跳转到该页面隐藏域都会产生不同的value的值,此时属于正常操作 如果提交表单的时候,出现隐藏域的值相同,说明表单重复提交(2)在Action类中 先获取session中存放的token的值,String sessionToken = session.getAttibuter ("sessionToken"); 首先会获取页面表单隐藏域(token.html)的值,String token = request.getParameter("token.html"); 同时放置到session中,session.setAttibuter("sessionToken",token); 判断表单是否重复提交 if(sessionToken.equal(token)){//表单重复提交 } else{//表单没有重复提交 } 2、struts实现表单重复提交 (1)在某个页面验证表单重复提交,此时要添加标签,该标签可以产生如下代码: (2)由于token拦截器没有放置到默认栈中,所以当使用token表单重复提交的时候,需要在struts.xml中加载token拦截器

struts2复习模拟题

填空: 1.Struts 2以__过滤器__为核心,采用__拦截器__的机制来处理用户的请求。 2.构建Struts 2应用的最基础的几个类库是_struts2-core__、_commons-logging_、_xwork-core_、__freamarker___以及_ognl_。 3.Struts 2中的控制器类是一个普通的_POJO_。 4.如果要在JSP页面中使用Struts 2提供的标签库,首先必须在页面中使用taglib编译指令导入标签库,其中taglib编译指令为_____<%@ taglib prefix=”s” uri=”strut-tags”%>______。5.在Struts 2表单标签库中,表单标签为__________。 6.ActionSupport类实现了__action_________接口和___validateable________等接口。7.通过控制器类中的____validate()_______方法来输出校验错误信息。 8. 在Hibernate XML影射文件中描述主键生成机制,其属性描述了主键的生成策略,至少写出三种策略名 increment 、 native 、 uuid 。 9. 在Hibernate中级联操作的属性值至少写出三个____none_______ 、_____save-update______、____all_______。 10 Hibernate的会话接口是 ______Session接口_____,它由接口 __SessionFactory接口__创建;Hibernate处理事务的接口是____Transaction接口_______;封装HQL的接口是_____Criteria接口______ 。 11.Struts2框架由_____ Struts ______和______ WebWork _____框架发展而来。 12.Struts2中的控制器类是一个普通的____Class_______。 13.注入资源的注释是____@Resource ___

如何自定义Struts2表单验证后的错误信息显示格式

如何自定义Struts2表单验证后的错误信息显示格式/样式 (s:fielderror,换行,黑点) 前面一段时间学过一些Struts2的知识,感觉Struts2和1.x还是有很大的差别的,我还不好说1.x肯定会过时还是2.0会很快流行,这毕竟是需要作为导向的。 在Struts2中验证真的比较容易,可以在Action中直接写validate,也可以使用validate框架进行验证,这个我觉得比Struts1.x方便了很多,但是有个问题一直困扰了我,直到现在有个小程序要用到这个方面的知识,那就是验证后如何很好地人性化地在jsp 页面中显示了。 大家都知道,Struts2显示验证结果有一些方式,一般通过两种方式,介绍如下: 1.在页面的上面或者某个位置全部显示错误 代码: 这样会显示所有的错误信息,模拟效果如下: 2.在每个字段下面或上面显示,通过 XXX(标签的name属性,象https://www.360docs.net/doc/ec14155092.html,ername) 例:用 戶 名: https://www.360docs.net/doc/ec14155092.html,ername 显示效果如下:

上面的差不多是Struts默认显示的两种方式,但是我们常见的显示方式并不是这样的,所有我们需要自定义这种格式,我们的习惯是把错误信息显示在某个出错字段的后面,一行显示,而它给了一个小黑点并且换了行,我们现在就来解决这个问题。 这个问题困扰了我很久,真的很久以前想过,但是没有彻底地解决,一直留到现在,今天在google上搜了很久,终于给解决了,现在分享一下解决的途径。 先提供网上的思路给大家(关键解决的思路) 1.struts2表单验证_错误信息的显示问题中提到 引用 10 楼 starwar2030 的回复: 可以在CSS中定义 .formFieldError { font-family: verdana, arial, helvetica, sans-serif; font-size: 12px; color: #FF3300; vertical-align: bottom; } .formFieldError ul{ margin: 0px; padding: 3px; vertical-align: middle; } 而后使用类似用