侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

Struts2(12)之标签库

zze
zze
2017-09-19 / 0 评论 / 0 点赞 / 377 阅读 / 5772 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

概述

对于一个 MVC 框架而言,重点是实现两部分:业务逻辑控制器部分和视图页面部分。Struts2 作为一个优秀的 MVC 框架,也把重点放在了这两部分上。控制器主要由 Action 来提供支持,而视图则是由大量的标签来提供支持。

在 JavaWeb 中,Struts2 标签库是一个比较完善,而且功能强大的标签库,它将所有标签都统一到一个标签库中,从而简化了标签的使用,它还提供主题和模板的支持,极大地简化了视图页面代码的编写,同时它还提供对 ajax 的支持,大大的丰富了视图的表现效果。与 JSTL(JSP Standard Library,JSP 标准标签库)相比,Struts2 标签库更加易用和强大。

PS:使用标签,需要引入 Struts2 核心 jar 包,在 jsp 头部,加入 <%@ taglib uri="/struts-tags" prefix="s" %>

使用

通用标签库

判断

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>标签库测试</title>
</head>
<body>
<s:set var="i" value="3" scope="request"/>
<s:if test="#request.i>3">
    i>3
</s:if>
<s:elseif test="#request.i<3">
    i<3
</s:elseif>
<s:else>
    i=3
</s:else>
</body>
</html>

image.png

循环

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>标签库测试</title>
</head>
<body>

<%--当前遍历对象会被放到值栈的root和context中--%>

<%--遍历 List--%>
<s:iterator var="letter" value="{'a','b','c'}">
    <s:property value="letter"></s:property>
</s:iterator>
<hr>
<%--遍历 Map--%>
<s:iterator value="#{'a':'1','b':'2','c':'3'}">
   key: <s:property value="key"/>
   value: <s:property value="value"/>
    <br>
</s:iterator>

<hr>
<%--类似 for 循环--%>
<s:iterator var="i" begin="0" end="10" step="2" status="s">
   <s:property value="#s.count"/> : <s:property value="i"/> <br>
</s:iterator>
</body>
</html>

image.png

日期

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>标签库测试</title>
</head>
<body>
<%
    Date date = new Date();
    request.setAttribute("date", date);
%>
<s:date name="#request.date" /> <br>
<s:date name="#request.date" format="yyyy年MM月dd日 HH:mm:ss" />
</body>
</html>

image.png

UI 标签库

<%@ page import="java.util.Date" %>
<%@ page import="java.util.TreeMap" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>标签库测试</title>
</head>
<body>
<%--
Struts2 默认会表单中标签套上 table
如果不想要 Struts2 提供的样式,可更改默认常量 struts.ui.theme
struts.ui.theme 有三个可选值:
xhtml : 默认值。
simple : 无样式提供。
ajax : 这个主题里的模板以 xhtml 主题里的模板为基础,但增加了一些ajax功能。

除了更改配置文件中的常量,还可以通过修改 s:form 上的 theme 属性来让主题只对当前表单生效
--%>

<%
    Map<String, String> gender = new HashMap<String, String>();
    gender.put("1", "男");
    gender.put("2", "女");
    request.setAttribute("gender", gender);

    Map<String, String> address = new HashMap<String, String>();
    address.put("hk", "香港");
    address.put("jp", "日本");
    request.setAttribute("address", address);

    Map<String, String> hobby = new HashMap<String, String>();
    hobby.put("1", "吃饭");
    hobby.put("2", "睡觉");
    hobby.put("3", "打豆豆");
    request.setAttribute("hobby",hobby);
%>
<s:form namespace="/" action="Test1">
    <%--隐藏域--%>
    <s:hidden name="id"/>
    <%--文本框--%>
    <s:textfield name="username" label="用户名"/>
    <%--密码框--%>
    <s:password name="password" label="密码"/>
    <%--单选框--%>
    <s:radio list="#request.gender" name="gender" label="性别"/>
    <%--下拉框--%>
    <s:select list="#request.address" name="address" label="地点"/>
    <%--多选框--%>
    <s:checkboxlist list="#request.hobby" name="hobby" label="爱好"/>
    <%--文本域--%>
    <s:textarea rows="3" cols="10" value="默认值" label="简介" />
    <%--提交按钮--%>
    <s:submit value="提交"/>
</s:form>
</body>
</html>

image.png

0

评论区