第一步配置web.xml
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>MainServlet</servlet-name>
<servlet-class>com.servlet.MainServlet</servlet-class>
<!-- 这里的配置与一般的servlet一样,但由于整个项目只会有一个servlet,所有的访问都将访问这个servlet,因此不同的访问只需要添加下面的参数即可-->
<init-param>
<!-- 页面请求的地址-->
<param-name>login</param-name>
<!-- 处理action的后台Action地址-->
<param-value>com.Action.LoginAction</param-value>
</init-param>
<init-param>
<param-name>view</param-name>
<param-value>com.Action.ViewAction</param-value>
</init-param>
<init-param>
<param-name>pub</param-name>
<param-value>com.Action.PubAction</param-value>
</init-param>
<init-param>
<param-name>check</param-name>
<param-value>com.Action.CheckUserAction</param-value>
</init-param>
<init-param>
<param-name>regist</param-name>
<param-value>com.Action.RegAction</param-value>
</init-param>
<init-param>
<param-name>rep</param-name>
<param-value>com.Action.RepAction</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MainServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
这里面定义了一个MainServlet,充当C层,所有的操作都会被这个servlet处理
2。定义Action接口
public interface Action {
/**
* 所有的具体Action实现这个接口
* @param request 请求对象
* @param response 应答对象
* @return :结果页面
*/
public String execute(javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response);
}
3.定于ActionFactory类
public class ActionFactory {
private static ActionFactory af;
public static ActionFactory getActionFactory(){
if(af==null)
{
af=new ActionFactory();
}
return af;
}
public Action getAction(String classname)
{
Action action=null;
try {
action=(Action)Class.forName(classname).newInstance();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return action;
}
}
这个工厂类主要用于产生Action类
4:编写MainServlet类
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String uri = request.getRequestURI();
String path = uri.substring(uri.lastIndexOf("/")+1,uri.lastIndexOf("."));
System.out.println(path);
String ActionClassName=this.getInitParameter(path);
System.out.println(ActionClassName);
Action action=ActionFactory.getActionFactory().getAction(ActionClassName);
String url=action.execute(request, response);
System.out.println(url);
if(!url.equals("success"))
{
if(url=="")
{
request.getRequestDispatcher("regist.jsp").forward(request,response);
}else
{
request.getRequestDispatcher(url).forward(request,response);
}
}
}
这个类里会根据web.xml自动生成相应的Action类,Action类执行相应的操作,同时返回url,考虑到使用ajax局部刷新,并不需要url,因此定义使用ajax的Action返回success
5:编写action类
UserService service=new UserService();
String username=request.getParameter("userName");
String password=request.getParameter("psw");
System.out.println(username);
if(service.login(username, password))
{
request.getSession().setAttribute("username", username);
return "index.jsp";
}
else
return "Login.jsp?eroName=loginFail";
}
6:service entity类和其他的一样,就不写了。主要就是这几步就可以实现