不用ssh,自己用servlet实现MVC模式

第一步配置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类和其他的一样,就不写了。主要就是这几步就可以实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值