1.struts2值栈:
参考:https://blog.csdn.net/superit401/article/details/83994149
(1) ValueStack是Struts2的一个接口,字面意义为值栈,OgnlValueStack是 ValueStack的实现类,客 户端发起一个请求,struts2架构会创建一个action实例同时创建一个OgnlValueStack值栈实例, OgnlValueStack贯穿整个Action的生命周期,struts2中使用OGNL将请求Action的参数封装为对象存储 到值栈中,并通过OGNL表达式读取值栈中的对象属性值。
(2)后端java获取值栈对象并赋值:
public class ValueStackDemoAction extends ActionSupport {
public String execute() throws Exception {
//1 获取值栈对象
ActionContext context = ActionContext.getContext();
ValueStack stack = context.getValueStack();
//2 调用值栈对象中的push方法
stack.push("abcd");
return "success";
}
}
2.struts2标签:
在jsp头部,加入<%@ taglib uri="/struts-tags" prefix="s" %>
参考:https://www.w3cschool.cn/struts_2/struts_control_tags.html
http://www.cnblogs.com/yw-ah/p/5760540.html
https://blog.csdn.net/benhuo931115/article/details/54378437
struts2标签分为:
控制标签:if和else标签
<s:if test="%{false}"> <div>Will Not Be Executed</div> </s:if> <s:elseif test="%{true}"> <div>Will Be Executed</div> </s:elseif> <s:else> <div>Will Not Be Executed</div> </s:else>
iterator标签:
<s:iterator value="days"> <p>day is: <s:property/></p> </s:iterator>
。。。
数据标签:
action标签:
<s:action name="actionTagAction!specialMethod" executeResult="true" />
include标签:
<s:include value="myJsp.jsp"> <s:param name="param1" value="value2" /> <s:param name="param2" value="value2" /> </s:include>
bean标签:
<s:bean name="org.apache.struts2.util.Counter" var="counter"> <s:param name="first" value="20"/> <s:param name="last" value="25" /> </s:bean>
property标签:
<s:property value="myBeanProperty" default="a default value" />
set标签:
<s:set name="myenv" value="environment.name"/>
表单标签:
。。。
Ajax标签:
。。。
3.ONGL表达式
OGNL是ObjectGraphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts 2框架使用OGNL作为默认的表达式语言。
主要用于struts框架中(目前在别的地方还没接触到)
就是<s:property value="" /> value里面的内容,就叫ONGL表达式;
参考:https://blog.csdn.net/superit401/article/details/83994149
如:
4.EL表达式
EL表达式是JSP 2.0(JavaEE1.4)规范中的一门技术 。若想正确解析EL表达式,需使用支持Servlet2.4/JSP2.0技术的WEB服务器。
EL表达式主要有下面四种功能:获取数据、执行运算、获取常用开发对象和调用java方法。
形式如:
<body>
<%
request.setAttribute("name","孤傲苍狼");
%>
<%--${name}等同于pageContext.findAttribute("name") --%>
使用EL表达式获取数据:${name}
<h1>获取javabean的属性</h1><hr>
<%
Person p = new Person();
p.setName("Lilei");
p.setAge(17);
pageContext.setAttribute("p",p);
%>
${p.name }${p.age } ${p.name }
<h1>empty 运算符 : </h1><hr>
<%
String str = "aaaa";
pageContext.setAttribute("str",str);
List list = new ArrayList();
list.add("");
pageContext.setAttribute("list",list);
%>
${empty str }
${empty list}
${empty pageScope }
<h1>逻辑运算</h1><hr>
&& and
|| or
! not
${not (3>2 and 1<2 or 10>3) }
<%
pageContext.setAttribute("name","wang");
request.setAttribute("name","li");
%>
${requestScope.name}
${param.name } ${paramValues.like[2] }${header["Accept-Language"] }
${cookie.JSESSIONID.name }${cookie.JSESSIONID.value }
${initParam.name2 }
</body>
参考:http://www.runoob.com/jsp/jsp-expression-language.html
5.JSTL表达式
参考:JSP 标准标签库(JSTL)http://www.runoob.com/jsp/jsp-jstl.html
核心标签是最常用的JSTL标签。引用核心标签库的语法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签 | 描述 |
---|---|
<c:out> | 用于在JSP中显示数据,就像<%= ... > |
<c:set> | 用于保存数据 |
<c:remove> | 用于删除数据 |
<c:catch> | 用来处理产生错误的异常状况,并且将错误信息储存起来 |
<c:if> | 与我们在一般程序中用的if一样 |
<c:choose> | 本身只当做<c:when>和<c:otherwise>的父标签 |
<c:when> | <c:choose>的子标签,用来判断条件是否成立 |
<c:otherwise> | <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行 |
<c:import> | 检索一个绝对或相对 URL,然后将其内容暴露给页面 |
<c:forEach> | 基础迭代标签,接受多种集合类型 |
<c:forTokens> | 根据指定的分隔符来分隔内容并迭代输出 |
<c:param> | 用来给包含或重定向的页面传递参数 |
<c:redirect> | 重定向至一个新的URL. |
<c:url> | 使用可选的查询参数来创造一个URL |
6.jsp标签
1)内置标签(动作标签): 不需要在jsp页面导入标签
2)jstl标签: 需要在jsp页面中导入标签
3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签
(1)jsp内置标签
<jsp:forward />转发标签、<jsp:include/>包含标签、<jsp:pararm/>参数标签、
还有嵌入到html和js的写java代码的脚本片段:<% %>
声明:<%! %>
jsp表达式:<%= %>
(2)JSTL标签,如5
(3)参考:https://www.cnblogs.com/fnz0/p/5662038.html