⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 registerprocessor.java

📁 Java Web开发详解.书中例子的源代码(JSPlesson)
💻 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 + -