?? registerprocessor.java
字號(hào):
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文件路徑的上下文參數(shù)的參數(shù)名。
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");
//判斷用戶是訪問(wèn)注冊(cè)頁(yè)面還是提交注冊(cè)信息。
if(null==action || !"register".equals(action))
{
SAXReader saxReader = new SAXReader();
//從web.xml文件中讀取style.xml文件的路徑。
//style.xml文件中保存了頁(yè)面顯示風(fēng)格的配置數(shù)據(jù)。
String xmlStyleFile=sc.getInitParameter(XML_STYLE_FILE);
InputStream is = sc.getResourceAsStream(xmlStyleFile);
List styleList=null;
try
{
//使用dom4j API訪問(wèn)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();
try
{
//調(diào)用RegisterPageParser實(shí)例解析User對(duì)象,產(chǎn)生解析事件,
//通過(guò)Sax2Xml實(shí)例創(chuàng)建XML文檔,并寫(xiě)入到StringWriter對(duì)象中。
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("頁(yè)面產(chǎn)生錯(cuò)誤!");
}
}
else
{
//得到用戶提交的注冊(cè)信息。
String username=req.getParameter("username");
String password=req.getParameter("password");
String email=req.getParameter("email");
String style=req.getParameter("styleList");
//實(shí)際應(yīng)用中,應(yīng)該在客戶端利用JavaScript腳本也做類似的判斷。
if(null==username || null==password || null==email || null==style ||
"".equals(username) || "".equals(password) ||
"".equals(email) || "".equals(style))
{
throw new UserException(
"用戶信息不能為空,請(qǐng)<a href=\"reg.jsp\">返回</a>重新填寫(xiě)!");
}
//創(chuàng)建User對(duì)象。
User userBean=new User();
userBean.setUsername(username);
userBean.setPassword(password);
userBean.setEmail(email);
userBean.setStyle(style);
GuestbookDB gstDB = (GuestbookDB)sc.getAttribute("gstdb");
try
{
//將用戶的注冊(cè)信息保存到數(shù)據(jù)庫(kù)中。
gstDB.registerUser(userBean);
}
catch (UserException ue)
{
throw ue;
}
HttpSession session=req.getSession(false);
//用戶注冊(cè)成功后,即認(rèn)為他已經(jīng)登錄,將用戶名保存到Session對(duì)象中,
//在本次會(huì)話中,用戶不需要再登錄。
session.setAttribute("user",username);
//將用戶選擇的顯示風(fēng)格保存到Session對(duì)象中,以便在本次會(huì)話中,
//使用用戶選擇的顯示風(fēng)格顯示頁(yè)面。
session.setAttribute("style",style);
String strMsg="注冊(cè)成功,<a href=\"say.jsp\">我要留言</a>或<a href=\"index.jsp\">查看留言</a>";
//將成功提示信息作為success屬性的值保存到請(qǐng)求對(duì)象中。
req.setAttribute("success",strMsg);
//調(diào)用SuccessProcessor實(shí)例的perform()方法創(chuàng)建成功頁(yè)面的XML文檔。
new SuccessProcessor().perform(req, resp,sc);
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -