19.JavaWeb基础 Struts 1标签
来源:互联网 发布:java在线客服聊天系统 编辑:程序博客网 时间:2024/05/16 09:41
一.Struts标签简介
在Struts中为了方便用户的开发依然提供了很多成型的标签库。无论哪种标签库实际上
都是与四种属性(page、request、session、application)范围有关的操作,所以
JSTL和Struts标签库是完全可以混合使用的。但是是这种情况基本不可能出现,因为Struts
标签库已经具备了完全的功能,直接使用即可,一般在不实用Web框架时就会使用JSTL。
以下主要介绍三个核心标签库:html、bean、logic。
二.Bean标签
Bean标签库的主要作用是定义和访问JavaBean。
<bean:define>定义变量:
s2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>s2.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><bean:define id="info" scope="page">CaMnter</bean:define><bean:define id="message" value="Save you from anything 07"></bean:define><h2>内容1:${info }</h2><h2>内容2:${pageScope.message }</h2></body></html>
<bean:define>复制JavaBean对象:
s3.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>s3.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><jsp:useBean id="copyBean" class="com.zyy.struts.vo.CopyBean" scope="page"></jsp:useBean><jsp:setProperty property="message" name="copyBean" value="Save you from anything 07"/><bean:define id="info" name="copyBean" property="message"></bean:define><h2>复制后:${info }</h2></body></html>
<bean:define>中的id属性可以设置你给变量起的名或者你给复制过来的JavaBean起的名
name表示要复制的JavaBean的id。
CopyBean.java:
package com.zyy.struts.vo;public class CopyBean {private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}
<bean:size>标签:
s4.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>s4.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><%List me = new ArrayList() ;me.add("CaMnter") ;me.add("Save you from anything 07") ;pageContext.setAttribute("me", me) ;%><bean:size id="length" name="me" scope="page"/><h2>长度:${length }</h2></body></html>
<bean:cookie>标签:
s5.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>s5.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><bean:cookie name="user" id="myCookie" value="CaMnter"/><%//保存3000秒myCookie.setMaxAge(3000) ;response.addCookie(myCookie) ;Cookie cookies[] = request.getCookies() ;for(Cookie cookie : cookies){%><h3><%= cookie.getName()%> --> <%=cookie.getValue() %></h3><%}%></body></html>
<bean:write>标签和<bean:include>标签:
s6.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>s6.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><bean:define id="CaMnter">define_Save you from anything 07 </bean:define><bean:write name="CaMnter" ></bean:write><bean:include id="include" page="/jsp/content.html"/>${include }</body></html>
content.html:
<!DOCTYPE html><html><head><title>content.html</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><h2>Save you from anything 07</h2></body></html>
<bean:resource>标签:
s7.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>s7.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><bean:resource name="/jsp/content.xml" id="resource"/><bean:write name="resource"/></body></html>
<bean:message>标签与国际化:
s8.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>s8.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><bean:message key="beanMessage.info" arg0="bean:" arg1="message"/></body></html>
资源文件Properties页面显示:
资源文件Source页面显示:
三.Logic标签
logic标签的主要作用是进行各种逻辑处理。如:执行分支语句、迭代、比较等操作。
<logic:present>和<logic:notPresent>标签:
s9.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>s9.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><%request.setAttribute("CaMnter", "Save you from anything 07") ;%><logic:present name="CaMnter" scope="request"><h2>我心中存在:${requestScope.CaMnter }</h2></logic:present><logic:notPresent name="me" scope="application"><h2>她心中的Application范围内也不存在我</h2></logic:notPresent></body></html>
<logic:empty>标签和<logic:notEmpty>标签:
sa.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>sa.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><%List<String> me = new ArrayList<String>() ;request.setAttribute("me", me) ;%><logic:empty name="me" scope="request"><h2>长度为0也被判为空</h2></logic:empty><logic:empty name="she" scope="request"><h2>不存在也被判为空</h2></logic:empty></body></html>
这里,提示一下:长度为0在<logic:empty>中也被判定为空。
关系运算标签:
sb.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>sb.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><%request.setAttribute("she", 7) ;request.setAttribute("me", "Save you from anything 07") ;%><logic:equal value="Save you from anything 07" name="me" scope="request"><h2>Save you from anything 07</h2></logic:equal><logic:notEqual value="forget her" name="me" scope="request"><h2>impossible</h2></logic:notEqual><logic:lessThan value="70" name="she" scope="request"><h2>小于70</h2></logic:lessThan><logic:greaterThan value="0" name="she" scope="request"><h2>大于0</h2></logic:greaterThan><logic:lessEqual value="7" name="she" scope="request"><h2>小于等于7</h2></logic:lessEqual><logic:greaterEqual value="7" name="she" scope="request"><h2>大于等于7</h2></logic:greaterEqual></body></html>
<logic:iterate>标签(logic标签库中最重要的):
sc.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>sc.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><%String me_str[] = { "CaMnter", "Save you from anything 07" };request.setAttribute("me_str", me_str);%><h3>输出数组:</h3><ol><logic:iterate id="me_part_str" name="me_str" scope="request"><li>${me_part_str }</li></logic:iterate></ol><%List me_list = new ArrayList();me_list.add("07");me_list.add("Never remember me");request.setAttribute("me_list", me_list);%><h3>输出List:</h3><ol><logic:iterate id="me_part_list" name="me_list" scope="request"><li>${me_part_list }</li></logic:iterate></ol><%Map me_map = new HashMap();me_map.put("If time could go back","I am willing to return to the past");request.setAttribute("me_map", me_map);%><h3>输出Map:</h3><ol><logic:iterate id="me_part_map" name="me_map" scope="request"><li>${me_part_map.key } -- > ${me_part_map.value }</li></logic:iterate></ol></body></html>
<logic:redirect>重定向标签:
修改struts-config.xml:
<struts-config><form-beans></form-beans><global-exceptions></global-exceptions><global-forwards><forward name="content" path="/jsp/content.html" /></global-forwards><action-mappings></action-mappings><message-resources parameter="resource.MessageResources" /></struts-config>
以上在<global-forwards>节点中添加了全局forward。
sd.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>sd.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><!-- 跳转到<global-forwards>中name="content"的forward配置的path路径 --><logic:redirect forward="content"></logic:redirect></body></html>
content.xml:
<!DOCTYPE html><html><head><title>content.html</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><h2>Save you from anything 07</h2></body></html>
这里,可以看出由/jsp/sd.jsp变为/jsp/content.html。明显是客户端跳转。
四.Html标签
这个Html自带的标签很类似。
那么我们就来一张JSP就知道了,很多Struts Html库中标签的功能,其实和Html本身的标签真
是大同小异。
se.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html"prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>se.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body><%request.setCharacterEncoding("UTF-8");%><html:form action="/jsp/simple.do" method="post">姓名:<html:text property="name"></html:text><br>密码:<html:password property="password"></html:password><br>性别:<html:radio property="sex" value="男">男</html:radio><html:radio property="sex" value="女">女</html:radio><br>语言:<html:checkbox property="languages" value="Java">Java</html:checkbox><html:checkbox property="languages" value="Android">Android</html:checkbox><html:checkbox property="languages" value="C++">C++</html:checkbox><html:checkbox property="languages" value="C#">C#</html:checkbox><br><br> 简介:<html:textarea property="note" cols="30" rows="3"></html:textarea><br><html:hidden property="id" value="7" /><html:submit value="提交"></html:submit><html:reset value="重置"></html:reset></html:form></body></html>
SimpleForm.java:
package com.zyy.struts.form;import org.apache.struts.action.ActionForm;public class SimpleForm extends ActionForm {private String name;private String password;private String sex;private String languages[];private String note;private int id;public String[] getLanguages() {return languages;}public void setLanguages(String[] languages) {this.languages = languages;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getNote() {return note;}public void setNote(String note) {this.note = note;}public int getId() {return id;}public void setId(int id) {this.id = id;}}
SimpleAction.java:
package com.zyy.struts.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import com.zyy.struts.form.SimpleForm;public class SimpleAction extends Action {public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {request.setCharacterEncoding("UTF-8");SimpleForm simple = (SimpleForm) form;System.out.println("ID:" + simple.getId());System.out.println("name:" + simple.getName());System.out.println("password:" + simple.getPassword());System.out.println("sex:" + simple.getSex());System.out.print("languages:");for (String language : simple.getLanguages()) {System.out.print(language + " ");}System.out.println("");System.out.println("note:" + simple.getNote());return null;}}
修改struts-config.xml:
<struts-config><form-beans><form-bean name="simpleForm" type="com.zyy.struts.form.SimpleForm"></form-bean></form-beans><global-exceptions></global-exceptions><global-forwards><forward name="content" path="/jsp/content.html" /></global-forwards><action-mappings><action path="/jsp/simple" attribute="simpleForm" input="/jsp/se.jsp"name="simpleForm" scope="request" type="com.zyy.struts.action.SimpleAction"></action></action-mappings><message-resources parameter="resource.MessageResources" /></struts-config>
但是,提交后一定有中文的乱码(sex:??)。
所以我们做一个过滤器SetCharacterEncodingFilter:
package com.zyy.struts.filters;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class SetCharacterEncodingFilter implements Filter {private String encoding;private FilterConfig filterConfig = null;public void destroy() {this.encoding = null;this.filterConfig = null;}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {request.setCharacterEncoding(this.encoding);chain.doFilter(request, response);}public void init(FilterConfig filterConfig) throws ServletException {this.encoding = filterConfig.getInitParameter("encoding");}}
配置struts-config.xml文件:
添加如下内容:
<filter> <filter-name>Set Character Encoding</filter-name> <filter-class>com.zyy.struts.filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
- 19.JavaWeb基础 Struts 1标签
- 18.JavaWeb基础 Struts 1
- 21.JavaWeb基础 Struts 1 Token
- javaweb基础----struts驱动模型
- 20.JavaWeb基础 Struts 1 多人开发
- 23.JavaWeb基础 Struts 1 DispatchAction(分发Action)
- javaweb-html基础标签01
- struts标签1
- struts 标签1
- Struts-Tags(标签)-1
- Struts 2的标签库(1)——标签库基础
- 【struts基础】Struts2常用标签总结
- javaweb基础(1)
- 1、JavaWEB视频基础
- Javaweb零基础开发(一) Struts配置
- javaweb标签
- Javaweb 标签
- Struts Series(1) - Struts基础
- 批量清理数据表重复标题的sql语句
- HDU-2110 Crisis of HDU
- 位运算总结
- 【索引】Backtracking - Easy
- ios8下沙箱目录结构之我见+相关的常用实用操作代码
- 19.JavaWeb基础 Struts 1标签
- JMS深入浅出
- 图形学创世纪:当科学照进影视与生活
- Visual Studio 2013下使用SVN
- UVA 657-The die is cast(双重BFS)
- "右键发送" 造成死机,解决方法,实验管用
- OC总结
- 数据库学习--全文本搜索
- hdu1234