——具体jsp聊天室项目体会Java反射

16 篇文章 0 订阅
14 篇文章 0 订阅

这是之前写的一篇博客,对java反射机制用法的基本介绍
http://blog.csdn.net/sinat_34803353/article/details/53150164



下面是聊天室项目的一个完整Baseservlet
反射写的一个基本servlet,以前就是,xie一个servlet需要继承HttpServlet,里面是doGet()或者doPost()方法,但它只能执行一个,一般情况下是一个模块对应一个servlet,这样比较清晰,或者像在struct2里面,一个模块的请求都会发到一个action里。这里,我们用反射模拟这种情况,一个servlet里面可以执行多个方法——怎么执行多个方法呢?就是在页面上,我们传了一个参数名,我们这里是叫method,值就是value值,假设value=”login”,然后我们就想让servlet执行login方法,那么这个是怎么做到的呢?——对,就是使用反射。
看这个Baseservlet,首先,我们会接收到一个method的value


package cn.utils;

import java.io.IOException;
import java.lang.reflect.Method;

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

public class BaseServlet extends HttpServlet {
    /*
     * 它会根据请求中的m,来决定调用本类的哪个方法
     */
    protected void service(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        res.setContentType("text/html;charset=utf-8");

        // 例如:http://localhost:8080/demo1/xxx?method=login
        String methodName = req.getParameter("method");// 它是一个方法名称

        // 当没用指定要调用的方法时,那么默认请求的是execute()方法。
        if(methodName == null || methodName.isEmpty()) {
            methodName = "execute";
        }

// ①得到字节码文件
        Class c = this.getClass();
        try {
            // ②通过方法名称获取方法的反射对象
            Method m = c.getMethod(methodName, HttpServletRequest.class,
HttpServletResponse.class);

            //③ 反射方法目标方法,也就是说,如果methodName为login,那么就调用login方法。
            String result = (String) m.invoke(this, req, res);

            // ④通过返回值完成请求转发
            if(result != null && !result.isEmpty()) {
                req.getRequestDispatcher(result).forward(req, res);
            }
        } catch (Exception e) {
            throw new ServletException(e);
        }
    }
}


下面是项目地址,大家如果相残考,可以下载完整代码
https://github.com/Sunshine-lhy/ChatRoom

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目背景和意义 随着时代的发展,信息技术、Internet技术、数据库技术的不断发展完善,网络进程的加快,信息的传递变得越来越重要。通过聊天工具进行聊天,你可以方准确,快速,方便的了解到对你有用的信息。 二 需求分析 在网络越来越发达的今天,人们对网络的依赖越来越多,由此而产生的聊天工具越来越多,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个局域网的网络聊天工具,而且通过制作该程序还能更好的学习网络软件编程知识。 2.1聊天室的可行性分析 随着计算机技术的发展和网络人口的增加,网络世界也越来越广博,越来越丰富,聊天已经成为网上一种习已为常的事。 可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的,经过最初的设计目标和进行的市场调查得出以下四点的可行性分析 (1)经济:实现这个平台设计有没有什么经济效益。该平台设计只是作为本小组的课程设计,又因为大家的设计能力有限,其功能还不能完善,所以没有什么经济效益可谈。 (2)技术:现有的技术能否开发该平台,会有哪些困难。 (3)运行:该平台规定的运行方式是否可行。 (4)法律:该平台的开发会不会在社会上引起侵权或其它责任问题。因为该平台是作为课程设计与商业无关,又因为是自主开发设计,因此不会构成侵权,在法律上是可行的。 2.2聊天室的优势 (1)网上聊天使人们之间的通信变得越来越方便,快捷,准确,及时。 (2)还可以在网上认识新的朋友,交流自己的一些想法。 三 系统的总体分析与设计 分析该聊天室系统,制订整个系统框架,主要要求及特点如下: 1.客户可在网上进行注册,成为会员; 2.可以对自己的信息进行查看,修改等操作; 3.可以与会员进行群聊; 4,可以增加好友,可以进行私聊; 5.后台数据库用Microsoft SQL SERVER ; 3.1需求规定 3.1.1系统的功能 1.以会员身份进入,可以查看自己的信息,修改,也可以注销,还可以进行群聊,私聊。 2.以管理员身份进入,可以对会员进行删除,查看所有会员信息。 3.1.2数据库 网上书店的所有数据应当存放在数据库中,因此首先建立一个数据库(ChatRoom sys)。在这个数据库中,建立这样几个基本表:C_user,friend,Login,C_message,C_reg;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值