`
summer_021
  • 浏览: 57966 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts1_学习笔记4_struts0400_jstl_EL表达式_核心库

 
阅读更多
1、使用JSTL,Servlet最低版本:2.4,查看Servlet版本方式:web.xml

2、JSTL可以操作数据库,XML

3、表达式一:EL表达式:
Action
Actionpublic ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//普通字符串
		request.setAttribute("hello", "hello world");
		
		//结构
		Group group = new Group();
		group.setName("和盈");
		
		User user = new User();
		user.setUsername("张三");
		user.setAge(18);
		user.setGroup(group);
		
		request.setAttribute("user", user);
		
		//map
		Map mapValue  = new HashMap();
		mapValue.put("key1", "value1");
		mapValue.put("key2", "value2");
		
		request.setAttribute("mapvalue", mapValue);
		
		//字符串数组
		String[] strArray = new String[]{"a", "b", "c"};
		request.setAttribute("strarray", strArray);
		
		User[] users = new User[10];
		for (int i=0; i<10; i++) {
			User u = new User();
			u.setUsername("U_" + i);
			users[i] = u;
		}
		request.setAttribute("users", users);
		
		List userList = new ArrayList();
		for (int i=0; i<10; i++) {
			User uu = new User();
			uu.setUsername("UU_" + i);
			userList.add(uu);
		}
		request.setAttribute("userlist", userList);
		
		//empty
		request.setAttribute("value1", null);
		request.setAttribute("value2", "");
		request.setAttribute("value3", new ArrayList());
		request.setAttribute("value4", "123456");
		return mapping.findForward("success");
	}


Struts1配置
	<action path="/jstlel" type="com.aowin.struts.JstlElAction">
			<forward name="success" path="/jstl_el.jsp" />
		</action>


JSP:
<h1>测试EL表达式</h1><br>
	<hr>
	<li>普通字符串</li><br>
	hello(jsp脚本):<%=request.getAttribute("hello") %><br>
	hello(el表达式,el表达式的使用方法$和{}):${hello }<br>
	hello(el表达式,el的隐含对象pageScope,requestScope,sessionScope,applicationScope,<br> 如果未指定scope,它的搜索顺序为pageScope~applicationScope):${requestScope.hello }<br>
	hello(el表达式,scope=session):${sessionScope.hello }<br>
	<p>
	<li>结构,采用.进行导航,也称存取器</li><br>
	姓名:${user.username }<br>
	年龄:${user.age }<br>
	所属组:${user.group.name }<br>
	<p>
	<li>输出map,采用.进行导航,也称存取器</li><br>
	mapvalue.key1:${mapvalue.key1 }<br>
	mapvalue.key2:${mapvalue.key2 }<br>
	<p>
	<li>输出数组,采用[]和下标</li><br>
	strarray[2]:${strarray[1] }<br>
	<p>
	<li>输出对象数组,采用[]和下标</li><br>
	userarray[3].username:${users[2].username }<br>
	<p>
	<li>输出list,采用[]和下标</li><br>
	userlist[5].username:${userlist[4].username }<br>
	<p>
	<li>el表达式对运算符的支持</li><br>
	1+2=${1+2 }<br>
	10/5=${10/5 }<br>
	10 div 5=${10 div 5 }<br>
	10%3=${10 % 3 }<br>
	10 mod 3=${10 mod 3 }<br>
	<!--
		 ==/eq
		 !=/ne 
		 </lt
		 >/gt
		 <=/le
		 >=/ge
		 &&/and
		 ||/or
		 !/not
		 //div
		 %/mod
	 -->  
	 <li>测试empty</li><br>
	 value1:${empty value1 }<br>
	 value2:${empty value2 }<br>
	 value3:${empty value3 }<br>
	 value4:${empty value4 }<br>
	 value4:${!empty value4 }<br>


结果:
value1:true
value2:true
value3:true
value4:false
value4:true





4、表达式二:JSTL核心库:

jstl标签库的配置
* 将jstl.jar和standard.jar拷贝到WEB-INF/lib下(如果使用el表达式,不用拷贝这两个jar)

注意:jstl必须在能够支持j2ee1.4/servlet2.4/jsp2.0版本上的容器才能运行,这个环境是3年前较为常用的环境

Group类:成员属性:name
User类:成员属性:username、age、group

Action:
public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//普通属性
		request.setAttribute("hello", "Hello World");
	
		//测试条件控制标签
		request.setAttribute("v1", 1);
		request.setAttribute("v2", 2);
		request.setAttribute("v3", new ArrayList());
		request.setAttribute("v4", "test");
		
		//html文本
		request.setAttribute("sh", "<font color='red'>上海欢迎您</font>");
		
		//测试c:forEach
		Group group = new Group();
		group.setName("和盈");
		List userList = new ArrayList();
		for (int i=0; i<10; i++) {
			User user = new User();
			user.setUsername("user_" + i);
			user.setAge(18+i);
			user.setGroup(group);
			userList.add(user);
		}
		request.setAttribute("userlist", userList);
		//测试循环输出map
		Map map = new HashMap();
		map.put("k1", "v1");
		map.put("k2", "v2");
		request.setAttribute("mapvalue", map);	
		//测试c:forTokens
		request.setAttribute("strTokens", "1,2,3,4,5,6");
		return mapping.findForward("success");
	}


Struts1配置文件:
<action path="/jstlcore" type="com.aowin.struts.JstlCoreAction">
			<forward name="success" path="/jstl_core.jsp" />
		</action>


页面显示:
<h1>测试jstl核心库</h1>
	<hr>
	<li>测试c:out</li><br>
	hello(default):<c:out value="${hello}"/><br>
	hello(el表达式):${hello }<br>
	hello(default="123"):<c:out value="${abc}" default="123"/><br>
	<!-- 去不到就为空串 -->
	hello(default="123"):<c:out value="${abc}">123</c:out><br>
	sh(defalut):<c:out value="${sh}"/><br>
	<!-- 取scope里东西value里面要用el表达式 -->
	bj(escapeXml="true"):<c:out value="${sh}" escapeXml="true"/><br>
	bj(escapeXml="false"):<c:out value="${sh}" escapeXml="false"/><br>
	bj(el表达式):${sh }<br>
	<p>
	<li>测试c:set和c:remove</li><br>
	<!-- 生命一个变量 默认scope为page -->
	<c:set value="123" var="temp"/>
	temp:${temp }<br>
	<c:remove var="temp"/>
	temp:${temp }<br>
	<p>
	<li>测试条件控制标签c:if</li><br>
	<c:if test="${v1 lt v2}" var="v">
		v1小于v2<br>v=${v }<br>
	</c:if>
	<!-- 为空或者为null test结果都为true -->
	<c:if test="${empty v3}">
		v3为空<br>
	</c:if>
	<c:if test="${empty v4}">
		v4为空<br>
	</c:if>
	<p>
	<li>测试条件控制标签c:choose,c:when,c:otherwise</li><br>
	<!-- when 1个或者多个 -->
	<!--otherwise 0个或者1个 -->
	<!-- if() else if() else if() else() -->
	<c:choose>
		<c:when test="${v2 gt v1}">
			v1小于v22<br>
		</c:when>
		
		<c:when test="${v1 lt v2}">
			v1小于v23<br>
		</c:when>
		
		<c:otherwise>
			v1大于v2<br>
		</c:otherwise>
	</c:choose>
	<c:choose>
		<c:when test="${empty v4}">
			v4为空<br>
		</c:when>
		<c:otherwise>
			v4不为空<br>
		</c:otherwise>
	</c:choose>
	<p>
	<li>测试循环控制标签c:forEach</li><br>
	<table border="1">
		<tr>
			<td>姓名</td>
			<td>年龄</td>
			<td>所属组</td>
		</tr>
		<c:choose>
			<c:when test="${empty userlist}">
				<tr>
					<td colspan="3">没有符合条件的数据!</td>
				</tr>
			</c:when>
			<c:otherwise>
				<c:forEach items="${userlist}" var="u">
					<tr>
						<td>${u.username }</td>
						<td>${u.age }</td>
						<td>${u.group.name }</td>
					</tr>
				</c:forEach>
			</c:otherwise>
		</c:choose>
	</table>	
	<p>	
	<li>测试循环控制标签c:forEach,varstatus</li><br>
	<table border="1">
		<tr>
			<td>姓名</td>
			<td>年龄</td>
			<td>所属组</td>
		</tr>
		<c:choose>
			<c:when test="${empty userlist}">
				<tr>
					<td colspan="3">没有符合条件的数据!</td>
				</tr>
			</c:when>
			<c:otherwise>
				<%--varStatus:变量状态 --%>
				<c:forEach items="${userlist}" var="user" varStatus="vs">
					<c:choose>
						<c:when test="${vs.count % 2 == 0}">
							<tr bgcolor="red">
						</c:when>
						<c:otherwise>
							<tr>
						</c:otherwise>
					</c:choose>
								<td>
									<c:out value="${user.username}"/>
								</td>
								<td>
									<c:out value="${user.age}"/>
								</td>
								<td>
									<c:out value="${user.group.name}"/>
								</td>
							</tr>					
				</c:forEach>
			</c:otherwise>
		</c:choose>
	</table>
	<p>
	<li>测试循环控制标签c:forEach,begin,end,step</li><br>
	<table border="1">
		<tr>
			<td>姓名</td>
			<td>年龄</td>
			<td>所属组</td>
		</tr>
		<c:choose>
			<c:when test="${empty userlist}">
				<tr>
					<td colspan="3">没有符合条件的数据!</td>
				</tr>
			</c:when>
			<c:otherwise>
				<c:forEach items="${userlist}" var="user" begin="2" end="8" step="2">
					<tr>
						<td>${user.username}</td>
						<td>${user.age}</td>
						<td>${user.group.name }</td>
					</tr>
				</c:forEach>
			</c:otherwise>
		</c:choose>
	</table>	
	<p>
	<li>测试循环控制标签c:forEach,普通循环</li><br>
	<c:forEach begin="1" end="10">
		a<br>
	</c:forEach>
	<p>
	<li>测试循环控制标签c:forEach,输出map</li><br>
	<!-- v:entity对象 -->
	<c:forEach  items="${mapvalue}" var="v">
		${v.key }=${v.value }<br>
	</c:forEach>
	<p>
	<li>测试循环控制标签c:forTokens(逗号间隔或者其他符号间隔的输出)</li><br>
	<c:forTokens items="${strTokens}" delims="," var="v">
		${v }<br>
	</c:forTokens>
	<p>
	<li>测试c:catch</li><br>
	<%
		try {
			Integer.parseInt("asdfsdf");
		}catch(Exception e) {
			out.println(e.getMessage());
		}	
	%>
	<p>
	<!-- var:放异常信息的变量 -->
	<c:catch var="exinfo">
		<%
			Integer.parseInt("asdfsdf");
		%>
	</c:catch>
	${exinfo }<br>
	<p>
	<!-- 相当于include -->
	<li>测试c:import</li><br>
	<c:import url="http://icafebar-pc:8080/struts0400_jstl/"/>
	<p>
	<li>测试c:url和c:param</li><br>
	<!-- 生成一个url串 -->
	<c:url value="http://www.baidu.com" var="v">
		<c:param name="username" value="Jack"/>
		<c:param name="age" value="20"/>
	</c:url>
	${v }<br>
	<li>测试:redirect</li><br>
	<%--如果不用context 则url里面写全路径
		<c:redirect context="/struts0400_jstl" url="/index.jsp"/>
	 --%>


页面显示效果:
测试jstl核心库
测试c:out

hello(default):Hello World
hello(el表达式):Hello World
hello(default="123"):123
hello(default="123"):123
sh(defalut):<font color='red'>上海欢迎您</font>
bj(escapeXml="true"):<font color='red'>上海欢迎您</font>
bj(escapeXml="false"):上海欢迎您
bj(el表达式):上海欢迎您

测试c:set和c:remove

temp:123
temp:

测试条件控制标签c:if

v1小于v2
v=true
v3为空

测试条件控制标签c:choose,c:when,c:otherwise

v1小于v22
v4不为空

测试循环控制标签c:forEach

姓名 	年龄 	所属组
user_0 	18 	和盈
user_1 	19 	和盈
user_2 	20 	和盈
user_3 	21 	和盈
user_4 	22 	和盈
user_5 	23 	和盈
user_6 	24 	和盈
user_7 	25 	和盈
user_8 	26 	和盈
user_9 	27 	和盈

测试循环控制标签c:forEach,varstatus

姓名 	年龄 	所属组
user_0 	18 	和盈
user_1 	19 	和盈
user_2 	20 	和盈
user_3 	21 	和盈
user_4 	22 	和盈
user_5 	23 	和盈
user_6 	24 	和盈
user_7 	25 	和盈
user_8 	26 	和盈
user_9 	27 	和盈

测试循环控制标签c:forEach,begin,end,step

姓名 	年龄 	所属组
user_2 	20 	和盈
user_4 	22 	和盈
user_6 	24 	和盈
user_8 	26 	和盈

测试循环控制标签c:forEach,普通循环

a
a
a
a
a
a
a
a
a
a

测试循环控制标签c:forEach,输出map

k1=v1
k2=v2

测试循环控制标签c:forTokens(逗号间隔或者其他符号间隔的输出)

1
2
3
4
5
6

测试c:catch

For input string: "asdfsdf"

java.lang.NumberFormatException: For input string: "asdfsdf"

测试c:import

测试JSTL
测试EL表达式
测试jstl核心库
测试jstl格式化库
测试jstl函数库

测试c:url和c:param

http://www.baidu.com?username=Jack&age=20
测试:redirect
分享到:
评论

相关推荐

    struts 2 学习笔记

    以上内容仅是Struts2学习笔记中的核心部分,实际学习时还需要深入理解拦截器、结果类型配置、插件机制、异常处理等更多高级特性。Struts2提供了强大的功能和灵活性,是Java Web开发中不可或缺的一部分。

    struts2立体结构笔记

    Struts2立体结构笔记主要涵盖...通过深入学习和实践Struts2立体结构笔记,开发者可以更好地掌握Struts2框架的使用,创建高效、稳定且易于维护的Web应用程序。同时,结合EL和JSTL,能够使页面表现力更强,提高开发效率。

    struts学习笔记

    总之,Struts框架结合JSTL和EL表达式,为Java Web开发提供了强大且易用的工具集,使开发者能够更加专注于业务逻辑,而非底层的表示层细节。通过熟练掌握这些工具,初学者可以快速提升Web应用开发能力。

    struts2学习笔记

    3. **集成与扩展**:Struts2在整合JSTL、EL表达式等方面更加成熟,提供了丰富的插件和扩展机制,如类型转换、国际化支持等。 4. **配置与管理**:Struts2的配置更加灵活,支持XML、注解、自定义配置等方式,简化了...

    struts学习笔记(3)

    2. **使用JSTL或其他表达式语言**:对于更高级的需求,可以使用JSTL标签库或者EL表达式语言。例如,如果你想要从`request`域获取数据,可以这样写: ```jsp ${requestScope.username}" /&gt; ``` #### 总结 通过...

    Java学习笔记、SSH学习笔记

    【Java学习笔记、SSH学习笔记】是一份涵盖了Java Web开发中的关键技术和框架的资源集合,主要涉及了JSP(JavaServer Pages)、JSTL(JavaServer Pages Standard Tag Library)、EL(Expression Language)以及SSH...

    struts自学笔记

    - Struts1使用JSTL EL,但其对集合和索引属性的支持有限。 - Struts2引入了OGNL(对象图表示语言),这是一个更强大和灵活的表达式语言,能更好地处理复杂的对象导航和类型转换。 5. **页面绑定与类型转换**: -...

    传智的javaweb学习笔记,比较全的

    4. **JSTL(JavaServer Pages Standard Tag Library)**:JSTL提供了一套标准的标签库,减少了JSP页面中的Java代码。笔记会讲解如何引入和使用JSTL标签。 5. **JDBC(Java Database Connectivity)**:JavaWeb应用...

    软件工程师学习笔记大全

    《软件工程师学习笔记大全》包含了中山大学的课程资源,涵盖了软件开发的核心技术,是一份非常宝贵的资料集合。这个压缩包中的文件主要围绕Java、C++、企业级应用框架以及Web开发等方面,为软件工程师的学习提供了...

    Struts2 + Hibernate开发笔记(二).txt

    4. **使用EL表达式**: - 在JSP页面中,可以使用EL(Expression Language)表达式来访问Action中的属性,例如`${cityId}`或`${mthCity.cityId}`。 #### 二、Action与Hibernate的集成 1. **业务层设计**: - 通常...

    韩顺平老师所有课程笔记

    同时,"韩顺平.j2ee视频实战教程"系列文档可能涵盖了JSP的进阶内容,如EL表达式、JSTL标签库、自定义标签以及Servlet与JSP的交互。 Oracle数据库的学习则在笔记中占有一席之地,虽然具体细节未知,但通常会包含SQL...

    软件工程师学习笔记J2EE

    笔记可能讲解了JSP的基本元素(如指令、脚本元素、动作标签)、EL(表达式语言)、JSTL(JSP标准标签库)以及JSP与Servlet的关系。 7. **Servlet.doc**: Servlet是Java Web开发中的服务器端组件,用于处理HTTP...

    Java/JavaEE 学习笔记

    Struts学习笔记...............263 Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data ...

    jsp学习笔记总结(收集)

    EL是用于简化JSP页面中的表达式,而JSTL提供了一系列标准标签,如fmt(格式化),sql(数据库操作),c(条件和循环),fn(函数库)等,它们极大地提高了代码的可读性和可维护性。 8. **MVC模式与JSP** 在传统的...

    达内5个月的笔记,所有课程都有

    笔记可能涉及JSP指令、脚本元素、EL(表达式语言)和JSTL(JavaServer Pages Standard Tag Library)。 8. **14. Struts1.x note.txt** - Struts 1是早期的MVC(模型-视图-控制器)框架,用于构建Java Web应用。...

    J2EE学习笔记(J2ee初学者必备手册)

    Struts学习笔记...............263 Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data ...

    JavaEE学习实战笔记心得

    #### JSTL与EL表达式 - **区别**: - **JSTL**:Java Server Pages Standard Tag Library,提供了一系列标准标签来简化JSP页面的开发。 - **EL**:Expression Language,用于简化JSP页面中的表达式书写,可以直接...

    javaweb 学习笔记(李巍老师)

    学习JSP包括脚本元素、指令标签、EL(表达式语言)和JSTL(JavaServer Pages Standard Tag Library)。 3. **MVC(Model-View-Controller)模式**:在JavaWeb开发中,MVC模式被广泛使用,它将业务逻辑(Model)、...

    黑马程序员_javaWEB讲义和笔记资料_day08

    课程可能涵盖了JSP的基本语法、EL(Expression Language)表达式、JSTL(JavaServer Pages Standard Tag Library)以及JSP的脚本元素和指令。 在Java Web中,会话管理也是一个关键点。day08可能讨论了如何在Servlet...

Global site tag (gtag.js) - Google Analytics