好了,如果我们的用户是合法的用户,那么我们就需要将这个用户的信息作为一个对象存储起来,具体的所就是通过Request里的getSession()方法获取与客户端请求相联系的会话即session,在通过session中的setAttribute()方法将对象的值赋给该session变量。并通过Respone里的sendRedirect()方法进行重新定向,我们这里把index.jsp作为了重新定向的Location。
这样的话,我们在回头去看index.jsp就明白为什么要从session里面取值是否为空来判断用户是否合法了。
我们设置怎么一个用于存储用户对象,并通过对它的判断来得知用户的合法性,具体的是非空就合法,空就非法。刚才的SQLBean就用到了。这个很简单我们定义一个名为Userbean.java的Bean
----------------------------------------------------------
UserBean.java
----------------------------------------------------------
package com.teach.bean;
/*
用户Bean
*/
public class UserBean
{
private String _userId;
private String _userName;
private String _password;
private String _trueName;
private String _userType;
public UserBean(){}
public void setUserId(String userId)
{
_userId = userId;
}
public void setUserName(String userName)
{
_userName = userName;
}
public void setPassword(String password)
{
_password = password;
}
public void setTrueName(String trueName)
{
_trueName = trueName;
}
public void setUserType(String userType)
{
_userType = userType;
}
public String getUserId()
{
return _userId;
}
public String getUserName()
{
return _userName;
}
public String getPassword()
{
return _password;
}
public String getTrueName()
{
return _trueName;
}
public String getUserType()
{
return _userType;
}
}
----------------------------------------------------------
呵呵,这个Bean似乎方法有点多,有人说我们只需要用户名和密码就可以了。对!这个是为了以后我们考虑到数据的全面性。比如用户的真实姓名,用户的ID等等。
我们似乎很满意自己的思路,可是问题是,我们是用什么方法完成页面转发的呢?
很多人知道,在MVC的框架模式中,Servlet通常作为整个web应用的控制器来使用。大部分的请求信息都是递交给Servlet来处理,Servlet再根据不同的请求转发到不同的JSP。
我们回头看一下login.jsp。看这个代码片断<form name="form1" method="post"
我们的请求是以post的方式传递出去的。所以我们应该有个dopost的方法来处理这些请求。于是我们利用ControlServlet来进行对请求信息的处理。
----------------------------------------------------------
ControlServlet.java
----------------------------------------------------------
package com.teach.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
//import com.teach.bean.UserBean;
public final class ControlServlet extends HttpServlet {
private static final long serialVersionUID = 1L; //为保持版本兼容性附给对象的唯一标识符
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
String action = request.getParameter("action");
String jspPage = "index.jsp";
if ((action == null) || (action.length() < 1))
{
action = "default";
}
if ("default".equals(action))
{
jspPage = "index.jsp";
}
else if ("out".equals(action))
{
request.getSession().invalidate();
jspPage = "login.jsp";
}
dispatch(jspPage, request, response);
}
protected void dispatch(String jsp, HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
if (jsp != null)
{
RequestDispatcher rd = request.getRequestDispatcher(jsp);
rd.forward(request, response);
}
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
doPost(request, response);
}
}
----------------------------------------------------------