java 控制器

1.控制器作用?

可以处理多个action。


代码:

1.controller层

package com.gxa.bj.controller;


import java.io.IOException;
import java.util.HashMap;
import java.util.Set;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import com.gxa.bj.action.IActionHandller;
import com.gxa.bj.util.XmlHelper;


public class DispaterController extends HttpServlet
{
private HashMap<String,IActionHandller> hashMap =new HashMap<String,IActionHandller>();
     @Override
    public void init() throws ServletException {
         hashMap=XmlHelper.getData();
         
    }
     @Override
    public void destroy() {
    // TODO Auto-generated method stub
    super.destroy();
    }
     @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {


    String path = req.getRequestURI().toString();//获得路径
    String actionName=path.substring(path.lastIndexOf("/")+1);//获得Action名字
         Set<String> keySets= hashMap.keySet();//获得键名
         IActionHandller actionHandler =null;//多态
         for(String s:keySets)//
         {
        if(s.equals(actionName))//如果s等于获取的路径名
        {
        actionHandler=hashMap.get(s);// 这个多态就等于相应的键名对应的类
        break;
        }
         }
         if(actionHandler!=null)//如果不为空表示赋过值
         {
        String Handlerpath = actionHandler.handller(req, resp);//获取处理相应的Action所获取的路径
        if(Handlerpath!=null)
        {
        req.getRequestDispatcher(Handlerpath).forward(req, resp);//跳到相应的路径
            }
         }


  
    }
     @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    doGet(req,resp);
    }
}

2.处理请求的接口

package com.gxa.bj.action;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * 定义了一个处理请求的接口
 * @author Administrator
 *
 */
public interface IActionHandller {
public String handller(HttpServletRequest req, HttpServletResponse resp);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值