一、需求
检查用户的合法性实现及安全登录。
新用户的注册
用户密码遗忘后通过注册邮箱来重新获取
二、设计
由JSP实现表示,其中包括登录页面、注册页面等。
由servlet实现转发控制,处理用户登录请求、注册请求以及取回消息请求。
由CMP表示用户注册信息,实现用户的增加及查找等操作。
由MDB实现包含密码信息邮件的发送。
三、实现时注意的问题:
1、下载argosoft mail server,安装启动时发现异常,原因是25号端口被XP系统的SMTP服务占用,将该服务停止,重新启动邮件服务器正常。
2、在servlet的各方法中,需要将response对象的编码格式设置为gb2312,否则forward后汉字无法正常显示,出现乱码。代码如下:
/*
* Created on 2004-6-8
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package com.study.exercise;
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import javax.naming.InitialContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.naming.*;
import javax.jms.*;
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class ProcessServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//TODO Method stub generated by Lomboz
doProcess(request,response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//TODO Method stub generated by Lomboz
doProcess(request,response);
}
protected void doProcess(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//TODO Method stub generated by Lomboz
String operation=request.getParameter("operation");
if(operation.equals("logon"))doLogon(request,response);
if(operation.equals("reg"))doReg(request,response);
if(operation.equals("retake"))doRetake(request,response);
}
protected void doLogon(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("gb2312");
String id=request.getParameter("userID");
// 将用户ID放入会话
request.getSession().setAttribute("userid",id);
String password=request.getParameter("password1");
String resultpage="/index.jsp";
PrintWriter out =response.getWriter();
try{
InitialContext ctx=new InitialContext();
Object objRef = ctx.lookup("UserBean");
// 主接口
UserHome
home=(UserHome)javax.rmi.PortableRemoteObject.narrow(
objRef,UserHome.class);
User bean =home.findByPrimaryKey(id);
String ps=bean.getPassword();
if(!ps.equals(password))resultpage="/notFindUser.jsp";
}catch (FinderException e){
resultpage="/notFindUser.jsp";
}
catch(javax.naming.NamingException ne){
out.println("Naming Exception caught:"+ne);
ne.printStackTrace(out);
}catch(java.rmi.RemoteException re){
out.println("Remote Exception caught:"+re);
re.printStackTrace(out);
}finally{
RequestDispatcher dispatcher =
getServletConfig().getServletContext().getRequestDispatcher(resultpage);
dispatcher.forward(request, response);
}
}
protected void doReg(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("gb2312");