?? registerprocessor.java
字號:
package org.sunxin.guestbook.controller;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.dom4j.*;
import org.dom4j.io.*;
import org.sunxin.guestbook.*;
import org.sunxin.guestbook.beans.*;
import org.sunxin.guestbook.parser.*;
import org.sunxin.guestbook.util.*;
public class RegisterProcessor implements Processor
{
//表示style.xml文件路徑的上下文參數的參數名。
private static final String XML_STYLE_FILE = "stylefile";
public void perform(HttpServletRequest req,
HttpServletResponse resp,
ServletContext sc)
throws IOException,ServletException,UserException
{
String action=req.getParameter("action");
//判斷用戶是訪問注冊頁面還是提交注冊信息。
if(null==action || !"register".equals(action))
{
SAXReader saxReader = new SAXReader();
//從web.xml文件中讀取style.xml文件的路徑。
//style.xml文件中保存了頁面顯示風格的配置數據。
String xmlStyleFile=sc.getInitParameter(XML_STYLE_FILE);
InputStream is = sc.getResourceAsStream(xmlStyleFile);
List styleList=null;
try
{
//使用dom4j API訪問style.xml。
Document doc = saxReader.read(is);
Element root = doc.getRootElement();
List childrenList = root.elements("style");
Iterator it = childrenList.iterator();
styleList = new ArrayList();
while (it.hasNext())
{
Element elt = (Element) it.next();
String attrValue = elt.attributeValue("name");
styleList.add(attrValue);
}
}
catch(DocumentException de)
{
System.err.println(de.toString());
}
User userBean=new User();
userBean.setStyleList(styleList);
try
{
//調用RegisterPageParser實例解析User對象,產生解析事件,
//通過Sax2Xml實例創建XML文檔,并寫入到StringWriter對象中。
RegisterPageParser regBeanParser = new RegisterPageParser(userBean);
StringWriter sw = new StringWriter();
Sax2Xml sax2xml = new Sax2Xml(regBeanParser, sw);
sax2xml.parse("");
String regPageXml = sw.toString();
req.setAttribute("page", regPageXml);
sw.close();
}
catch (Exception e)
{
throw new ServletException("頁面產生錯誤!");
}
}
else
{
//得到用戶提交的注冊信息。
String username=req.getParameter("username");
String password=req.getParameter("password");
String email=req.getParameter("email");
String style=req.getParameter("styleList");
//實際應用中,應該在客戶端利用JavaScript腳本也做類似的判斷。
if(null==username || null==password || null==email || null==style ||
"".equals(username) || "".equals(password) ||
"".equals(email) || "".equals(style))
{
throw new UserException(
"用戶信息不能為空,請<a href=\"reg.jsp\">返回</a>重新填寫!");
}
//創建User對象。
User userBean=new User();
userBean.setUsername(username);
userBean.setPassword(password);
userBean.setEmail(email);
userBean.setStyle(style);
GuestbookDB gstDB = (GuestbookDB)sc.getAttribute("gstdb");
try
{
//將用戶的注冊信息保存到數據庫中。
gstDB.registerUser(userBean);
}
catch (UserException ue)
{
throw ue;
}
HttpSession session=req.getSession(false);
//用戶注冊成功后,即認為他已經登錄,將用戶名保存到Session對象中,
//在本次會話中,用戶不需要再登錄。
session.setAttribute("user",username);
//將用戶選擇的顯示風格保存到Session對象中,以便在本次會話中,
//使用用戶選擇的顯示風格顯示頁面。
session.setAttribute("style",style);
String strMsg="注冊成功,<a href=\"say.jsp\">我要留言</a>或<a href=\"index.jsp\">查看留言</a>";
//將成功提示信息作為success屬性的值保存到請求對象中。
req.setAttribute("success",strMsg);
//調用SuccessProcessor實例的perform()方法創建成功頁面的XML文檔。
new SuccessProcessor().perform(req, resp,sc);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -