JavaEE高级框架学习笔记(四)Struts其他常用标签

0.前言

其实我之前学过Struts2,大致知道怎么配置struts.xml文件、web.xml文件,写一个Action,里面补上setter、getter和execute就好了,自从学习了Struts1之后,对struts2的理解更深刻了,也知道其改进和优化的地方在哪里。

1.struts标签跳转连接

	<html:link page="/05.jsp">链接2</html:link>

可以使用这种方式进行跳转,但是要记得page后面的虚拟目录需要加上“\”,不然会报错。

   <html:link forward="result">链接2</html:link>

也可以使用这种方式进行跳转,但是forward后面的文字需要在struts-config.xml的global-forwards中进行配置

  <global-forwards>
  	<forward name="result" path="/05.jsp"></forward>
  </global-forwards>

2.利用struts标签在跳转时传递参数

在url后面加上问号再加上传递的参数值是一个很常用的方法,但是这个方法有很多的局限性,比如不太灵活等等,因此采用另一种方式去自动获得参数是一个不错的选择。

<%
		session.setAttribute("msg","欧世乐");
%>
	<html:link page="/05.jsp" paramId="param" paramName="msg">链接2
	</html:link>

这种方式的跳转链接指定了获取参数来自何方(paramName就是指明此参数来自何处)
在结果的jsp页面就可以显示出传递过来的值了

姓名:<%=session.getAttribute("msg") %>

session或者requets都可以存储许多值,比如说集合,这是普通的url传值做不到的,这种传值方式很方便。

3.如何传递JavaBean的参数

在JSP页面实例化一个Student,用setter设置其初始值,将这个JavaBean存入session

	<%
		Student student=new Student();
		student.setName("欧乐乐");
		session.setAttribute("msg2", student);
	%>

在标签中获取利用paramProperty获取JavaBean的属性值

<html:link page="/05.jsp" paramId="param" paramName="msg2" paramProperty="sex">链接3
</html:link>

在结果页面中获取session即可

性别:<%=session.getAttribute("msg2") %>

这里的结果是一个地址,很正常,因为需要使用bean标签进行显示

4.bean标签读取数据

就上文的问题,避免输出bean的地址,而是一个确切的值,我们将使用bean标签的write功能

<bean:write name="msg2" property="sex"/><BR>

这里的name会自动获取session,如果session里面装的是一个对象,property是这个对象的属性之,比如这里session装的是Student,那么这个property就是其属性值。

bean:write标签的好处还有可以原样输出文本,不用担心html标签会被应用。当然也可以利用fliter:false使标签得以应用。

5.bean标签使用Cookie

首先要声明的一点,在JSP页面写Cookie是不符合MVC原则的,所以应该尽量去避免,利用bean标签读cookie是符合MVC原则的。

在一个页面生成一个Cookie

<%
		response.addCookie(new Cookie("username","Mars"));
	%>

在另一个页面利用bean标签获取cookie

	<bean:cookie name="username" id="cookie1"/>
	<bean:write name="cookie1" property="value"/>

因为cookie有个属性值是value,所以要在property里面补充一下,不然出来的还是地址。

6. Logic标签

1.判断bean标签的值是否为正确
	<logic:equal name="str" value="Man">
	OK
	</logic:equal>

如果str的值为Man,那么就是显示OK字样,否则不会显示
至于这里的str来自于bean标签

<bean:parameter id="str" name="param"/>
2.判断session内是否有个名字叫做XX的成员
<logic:present name="msg2">
	OKK
</logic:present>

如果存在,那么就是显示OKK字样,否则不会显示

3.遍历

3.1 简单集合
在一个页面写好集合

<%
	ArrayList books=new ArrayList();
	books.add("三国演义");
	books.add("水浒传");
	books.add("红楼梦");
	books.add("西游记");
	session.setAttribute("books", books);
	%>

在另一个页面利用logic标签进行遍历

<logic:iterate id="book" name="books">
	<bean:write name="book"/>
	</logic:iterate>

3.2 集合里面含有JavaBean

在一个页面写好集合

<%
	ArrayList stu=new ArrayList();
	Student stu1=new Student();
	Student stu2=new Student();
	Student stu3=new Student();
	stu1.setName("O");
	stu.add(stu1);
	stu2.setName("S");
	stu.add(stu2);
	stu3.setName("L");
	stu.add(stu3);
	session.setAttribute("stu4", stu);
	%>
	

在另一个页面利用logic标签进行遍历

<logic:iterate id="stu3" name="stu4">
		<bean:write name="stu3" property="name"/>
	</logic:iterate>

3.3 JavaBean里面含有集合

假设这个学生有多个电话号码
在一个页面写好集合

Student stu5=new Student();
	ArrayList phones=new ArrayList();
	phones.add("123456");
	phones.add("789999");
	stu5.setPhones(phones);
	session.setAttribute("stu5",stu5);

在另一个页面利用logic标签进行遍历

<logic:iterate id="phone" name="stu5" property="phones">
		<bean:write name="phone"></bean:write>
	</logic:iterate>

因为这里的stu5是一个对象,所以我们要遍历这个对象的属性值

3.4 遍历HashMap(复杂集合)

在一个页面写好集合

<% 
	HashMap hm=new HashMap();
	hm.put("param1", "OSL");
	hm.put("param2", "男");
	hm.put("param3", "20");
	session.setAttribute("paramList", hm);
	%>

在另一个页面利用logic标签进行遍历

 <logic:iterate id="element" name="paramList">
	 	<bean:write name="element" property="key"/>
	 	<bean:write name="element" property="value"/>
	 </logic:iterate>

哈希表采用的是键-值模式的集合

4.小结

Strust基本知识就此完毕了,这些都是基本的标签,其他的标签有些违背了MVC的原则,如果想要了解也是可以的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值