反射减少servlet数量

每个servlet只做一件事的后果就是servlet的数量会变得很庞大不好管理,比如登录与注册功能就应该在同一个servlet中处理,可以叫UserServlet,利用反射可以减少servlet的数量

servlet实例:

package action;

import dao.pojo.Message;
//import org.hibernate.Query;
import service.IService.IMsgService;
import service.ImpService.ImpMsgService;
import service.ServiceFactory;

import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;

/**
 * Created by yuzhiyun on 2016-10-10.
 */
@WebServlet("*.msg")
public class MsgServlet extends HttpServlet {

    //弹幕service接口
    IMsgService impMsgService;

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

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doGet(req, resp);

        System.out.print("访问MsgServlet成功");

        String temp = req.getServletPath().substring(1);
        String methodName = temp.substring(0, temp.length() - 4);

        Method method = null;
        try {
            method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
            method.invoke(this, req, resp);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

//        resp.sendRedirect("./index.jsp");
    }

    public void save(HttpServletRequest req, HttpServletResponse resp) {
        try {
            resp.getWriter().print("存储数据");
        } catch (IOException e) {
            e.printStackTrace();
        }
        Message msg=new Message();
        msg.setmMsgContent("多了一条");
        impMsgService = ServiceFactory.getMsgService();
        impMsgService.save(msg);
    }

    public void findAll(HttpServletRequest req, HttpServletResponse resp) {
        try {
            resp.getWriter().print("查询数据 ");
        } catch (IOException e) {
            e.printStackTrace();
        }
        impMsgService = ServiceFactory.getMsgService();
        List list=impMsgService.findAll();
        //打印
        for (Object object : list) {
            System.out.println(((Message) object).getmMsgContent());
        }
    }

}

注意,注解@WebServlet(“*.msg”)不需要加斜杠/,
这样的话,在浏览器端访问

http://localhost:8080/findAll.msg

就会执行findAll()函数
访问

http://localhost:8080/save.msg

就会执行save()函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值