Struts2标签
首先定义标签
一、通用标签
1.url
value=“URL”
var=“压入Map栈的key”
action="action请求名"
2.param
把参数和参数值传给父标签,一般不能单独使用,要被其他标签包含
属性
name="key参数名 "
value="参数值"
参数值会进行OGNL解析,
①不以#开头在对象中查找和参数值匹配的属性值
②以#开头从Map栈中找
不被解析
参数值不符合命名规范:
纯数字
把参数值使用单引号引起来
3.set
向Map栈的指定范围内压入键值对
属性:name=“key名”,value=“值”
要经过OGNL解析
scope="作用范围"
定义作用域
4.push
push
向对象站临时压入对象,标签结束后就弹出
属性
value=“对象”
通过OGNL解析获取对象
注意:测试内容要在push标签内部,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <% @page import = "java.util.Date" %> <%@ 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>index</title> </head> <body> <% session.setAttribute( "tom" , "aaaa" ); session.setAttribute( "date" , new Date()); %> 测试通用标签:<br> 1 . url标签<br> <s:url value= "/test.jsp" var= "testurl" > <s:param name= "key1" value= "#session.tom" ></s:param><!-- 访问Map栈 --> </s:url> <br><br> 2 . set 标签<br> <s:set name= "key2" value= "'bbb'" scope= "session" ></s:set> <br><br> 3 .push标签<br> <s:push value= "#session.date" > 年=${year } </s:push> <br> <br><br> <s:debug></s:debug> </body> </html> |
二、表单标签
特点;
自动排版和布局
使用table
支持自动回显
自动从对象栈的Action对象中查找对应的属性并显示属性值
共同属性:
name=“属性名”
和Action类的属性进行匹配
lable="说明"
自动在结尾加:,显示在前面的表格单元中
点击lable文字,对用的组件自动获得焦点
value ="显示的值"
1.s:from
action=“url”
medoth="get/post"
2.s:textfield文本框
3.s:password
4.s:hidden
5.s:radio单选框
list=''数据集合"
从值栈获取
6.s:checkboxlist多选按钮
7.s:select下拉选择框
8.textarea多行文本域
cols 列数
rows行数
9.checkbox
默认代表boolean值
选中=true
不选中=false
实现方式
自动添加对应的隐藏域
fieldValue:自定义的选中值
10.s:submit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <% @page import = "java.util.HashMap" %> <% @page import = "java.util.Map" %> <%@ 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>表单标签</title> </head> <body> 表单标签<br><br> <% Map<String,String> ms = new HashMap<String,String>(); ms.put( "1" , "乒乓球" ); ms.put( "2" , "网球" ); ms.put( "3" , "排球" ); ms.put( "4" , "羽毛球" ); ms.put( "5" , "篮球" ); request.setAttribute( "ms" , ms); %>> <s:form action= "testfrom" method= "post" > <s:textfield name= "userID" label= "ID" value= "请输入ID" ></s:textfield> <s:textfield name= "userName" label= "用户名" ></s:textfield> <s:password name= "password" label= "密码" ></s:password> <s:hidden name= "testhidden" label= "隐藏域的内容" ></s:hidden> <s:radio name= "sex" list= "#{'1':'男','2':'女'}" label= "性别" ></s:radio> <s:checkboxlist list= "#{'1':'篮球','2':'足球'}" name= "sport" label= "运动项目1" ></s:checkboxlist> <s:checkboxlist list= "#request.ms" name= "sport" label= "运动项目2" ></s:checkboxlist> <s:set name= "sop" value= "#request.ms" ></s:set> <s:select headerValue= "3" list= "#sop" name= "aaa" label= "运动项目3" ></s:select> <s:textarea name= "testarea" label= "个人说明" cols= "20" rows= "10" ></s:textarea> <s:checkbox name= "admin" label= "管理员" fieldValue= "hh" ></s:checkbox> <s:submit value= "提交" type= "submit" align= "center" ></s:submit> </s:form> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <%@ 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> 表单回显<br><br> <s:form action= "testfrom" method= "post" > <s:textfield name= "userID" label= "回显ID" ></s:textfield> <s:textfield name= "userName" label= "回显用户名" ></s:textfield> <s:password name= "password" label= "回显密码" showPassword= "true" ></s:password> <s:checkbox name= "admin" label= "回显管理员" ></s:checkbox> </s:form> <br><br> <s:debug></s:debug> </body> </html> |
回显页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?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> <!-- 覆盖默认的过滤的扩展名--> <constant name= "struts.action.extension" value= "do,action,," ></constant> <!-- 启用动态调用 <constant name= "" ></constant>--> <!-- 允许调用静态方法和静态属性 --> <constant name= "struts.ognl.allowStaticMethodAccess" value= "true" ></constant> <!-- 定义包 --> < package name= "text" extends = "struts-default" > <action name= "testfrom" class = "com.hanqi.action.TestFromAction" > <result>view.jsp</result> </action> </ package > </struts> |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?
· 一个基于 .NET 开源免费的异地组网和内网穿透工具