0. 前言
习惯了利用html标签进行输入的开发者,是否回想过利用Struts框架的输入标签进行开发呢。不用担心,所有的Struts框架在浏览器端解码后都是我们熟悉的源码,但是使用框架,说到底也只是为了规范化,模块化,便于后期的修改、团队的分工合作和定位出错。因此Struts输入标签的便捷与灵活就使得其独具魅力。
1.struts-html.tld
tld就是taglib description的缩写,是标签库。struts-html.tld提供了许多替代html标签的写法,这种写法与struts框架相适应,因为可以通过配置文件直接和ActionForm、Action进行连接,省去了很多麻烦。
2.功能实现——注册页面
1.配置strust-config.xml
<action name="regForm" path="/reg" type="Action.RegAction"></action>
<form-bean name="regForm" type="Action.RegForm"></form-bean>
2.编写reg.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html>
<head>
<meta charset="UTF-8">
<title>注册页面</title>
</head>
<body>
<html:form action="/reg" method="get">
请输入您的账号(文本框):<html:text property="account"></html:text>
<br>请您输入密码<html:password property="password"></html:password>
<br>请您输入个人信息(多行文本框)
<!--在Struts标签中,系统看到某个property,如果没有手动设置value,就会调用AcntionForm的getter方法来获取初始值 -->
<br><html:textarea property="info" rows="5" cols="40"></html:textarea>
<br><html:submit value="提交注册信息"></html:submit>
</html:form>
</body>
</html>
这里的"/reg"经过strust-config.xml的配置,系统会知道应该把表单提交到何处。
3.RegForm.java
package Action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* 作用:
*@author 欧世乐
*/
public class RegForm extends ActionForm{
private String account;
private String password;
private String info;
/**
* @return the info
*/
public String getInfo() {
return info;
}
/**
* @param info the info to set
*/
public void setInfo(String info) {
this.info = info;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return the account
*/
public String getAccount() {
return account;
}
/**
* @param account the account to set
*/
public void setAccount(String account) {
this.account = account;
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
}
reg.jsp中每一个struts标签都需要在RegForm.java中有对应的属性、getter、setter方法。不然会报错,除非填写value属性,因为在Struts标签中,系统看到某个property,如果没有手动设置value,就会调用AcntionForm的getter方法来获取初始值。
4.RegAction.java
package 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 Action.RegForm;
public class RegAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
RegForm regForm = (RegForm) form;// TODO Auto-generated method stub
request.setAttribute("regForm", regForm);
return new ActionForward("/regResult.jsp");
}
}
注意继承Action接口,其中 request.setAttribute(“regForm”, regForm);不写也可以,Struts框架已经帮我们做了这一步,在结果页面直接request.getAttribute(“regForm”)就可以了。
5.regResult.jsp
<%@page import="Action.RegForm"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册信息</title>
</head>
<body>
<%
RegForm regForm=(RegForm)request.getAttribute("regForm");
%>
账号:<%=regForm.getAccount() %>
密码:<%=regForm.getPassword() %>
个人信息:<%=regForm.getInfo() %>
</body>
</html>
3.小结
Struts标签库为开发者提供的极大地便利,规范化的编写和程序之间低耦合的特性让其显得十分有魅力,它是后续其他优秀框架的借鉴。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmL4QTMzAzN0IjM3ADOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.gif)