天天看點

JavaEE進階架構學習筆記(三)Struts輸入标簽完成注冊頁面0. 前言1.struts-html.tld2.功能實作——注冊頁面3.小結

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标簽庫為開發者提供的極大地便利,規範化的編寫和程式之間低耦合的特性讓其顯得十分有魅力,它是後續其他優秀架構的借鑒。

JavaEE進階架構學習筆記(三)Struts輸入标簽完成注冊頁面0. 前言1.struts-html.tld2.功能實作——注冊頁面3.小結