`
heavan2010
  • 浏览: 1911 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个Servlet替代项目所有的servet

阅读更多
在实际的项目开发中,如果没有用到struts 而是选择了Servlet。这个时候不免要创建很多的Servlet,并且在servlet中实现doget(),doPost()方法,然后再根据需求创建方法。而方法则需要经过很多的if else 语句。这不免有点让人烦感。下面这三段代码则实现了,项目仅创建一个Servlet轻松搞定所有的业务。也更加体现了面向对象的思想。
首先创建一个基类:
package com.heavan.base;

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 {
/**
*
*/
private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取类的全路径以及名称
String className = request.getParameter("className");
                  //获取方法名
String methodName = request.getParameter("method");
try {
                           //获取class文件
Class<?> class1 = Class.forName(className);
//获取该类所需求的方法
                           Method method = class1.getDeclaredMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
method.invoke(class1.newInstance(), request,response);//方法的实现
} catch (Exception e) {
e.printStackTrace();
}
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}

创建一个用于Book类    (不是Servlet)
package com.heavan.book;

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

public class Book {

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
public void addBook(HttpServletRequest request ,HttpServletResponse response){
System.out.println("haha");
System.out.println(request.getParameter("username"));
}


}


现在要实现图书的添加功能(如何实现那?)


一个灵活的方法解决问题:
前台页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'book' starting page</title>
   
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
  </head>
 
  <body>
  <form action="<%=path %>/servlet/BaseServlet" method="post">
  <input type="hidden" name="className" value="com.heavan.book.Book"><!--这个要注意噢!-->
  <input type="hidden" name="method" value="addBook">
  <input type="text" name="username">
  <input type="submit" value="submit">
  </form>
  </body>
</html>


分享到:
评论
3 楼 heavan2010 2011-12-11  
ksqqxq 写道
听说使用反射会花费很多的时间,同时破坏面向对象的特征。

想法不错。

目前的框架那个不是在利用反射,动态代理搞的。
2 楼 ksqqxq 2011-12-10  
听说使用反射会花费很多的时间,同时破坏面向对象的特征。

想法不错。
1 楼 heavan2010 2011-12-10  
补充一点:
       配置文件中,仅需要配置BaseServlet就可以了。还起到了简化了配置文件的功效。

相关推荐

    Java服务器开发(二)写第一个Servlet

    而JavaEE(Java Enterprise Edition),现在称为Jakarta EE,是一个用于构建企业级分布式应用的平台,它包含了JavaWeb的所有组件,并提供了更多的服务,如EJB(Enterprise JavaBeans)、JMS(Java Message Service)...

    Servlet编程简介

    Servlet API, 是用来写servlet的, 编写servlet是已没有CGI脚本那样诸如关心一个servlet是这样被装载, servlet运行的服务器环境是什么, 或者用来传输数据的协议是什么等等,这样servlets就可以融合在不同的web服务器...

    servlet 模拟

    当我们说一个Servlet是线程不安全的,意味着在多线程环境下,该Servlet的行为可能会出现问题,如数据混乱、竞态条件或死锁。 首先,让我们深入理解Servlet的工作原理。当一个HTTP请求到达Web服务器,服务器会创建一...

    Servlet速成学习

    - 加载:当服务器启动或者第一次请求Servlet时,会加载Servlet类并创建一个Servlet实例。 - 初始化:Servlet实例被创建后,服务器会调用Servlet的init()方法进行初始化,通常在这里进行一些全局设置。 - 服务:...

    韩顺平servlet笔记.rar下载

    9. **多线程**:Servlet默认是线程安全的,一个Servlet实例可以服务于多个并发请求。开发者需要注意同步问题,避免在Servlet中使用静态变量存储请求相关数据。 10. **过滤器(Filter)**:Servlet API还提供了过滤...

    servlet基本语法与编程

    1. **高效**:由于Servlet在服务器端运行,首次请求激活后,它会在后台持续运行,等待后续请求,每个请求都会在一个单独的线程中处理,而不是创建新的进程,从而提高了效率。 2. **方便**:Servlet提供了一系列实用...

    servlet-3_1-final.pdf

    Java Servlet 规范版本 3.1 是一个由 Oracle Corporation 维护的服务器端 Java 技术,用于扩展服务器的功能,特别适合于扩展 Web 服务器的功能。它定义了 Java 类的 API,用于响应 Web 请求,并在服务器上进行服务,...

    Servlet Demo

    在本"Servlet Demo"项目中,我们将深入探讨Servlet的基本概念、生命周期、以及如何创建和部署一个简单的Servlet应用。 一、Servlet基础 1. **Servlet接口**:Servlet的核心接口,定义了Servlet的基本方法,如`...

    Java Servlet 学习课件

    Servlet是Java 2平台的重要组成部分,旨在替代CGI(Common Gateway Interface)程序,提供更高的运行效率、更好的跨平台能力和更强大的功能。 Servlet的基本原理在于,它们是100% Pure Java的,这意味着它们可以在...

    servlet 3.0新增功能详解

    具体实现方式是:当 Servlet 收到请求后,可以将耗时的业务逻辑处理委托给一个专门的异步线程来执行,而 Servlet 自身则可以立即返回至容器。这样一来,Servlet 线程不再被阻塞,可以更快地处理其他请求,从而提高了...

    servletapi

    - 异步处理:Servlet 3.0引入了异步处理能力,允许Servlet在`service()`方法内启动一个异步操作,提高性能。 - 零停机时间部署:Servlet 3.0允许在不中断现有请求的情况下热部署更新。 7. **Filter与Listener**:...

    servlet servlet

    如果请求匹配到一个Servlet,Servlet容器将创建一个Servlet实例(如果尚未创建),然后调用Servlet的相关方法来处理请求。默认情况下,Servlet容器会调用Servlet的`service()`方法,该方法会根据请求类型(GET、POST...

    JFREECHART中servlet包对于项目冲突的修改版

    你可以直接将这个JAR添加到你的项目类路径中,以替代原始的JFreeChart库,从而解决项目中的包冲突问题。 总之,解决JFreeChart与servlet包的冲突是一项必要的工程实践,它涉及到对第三方库的源码修改、重新编译和...

    servlet增删改查

    - 使用IDEA或Eclipse等工具创建一个新的Web项目,命名为`StudentZSGC`。 - 配置项目的目录结构和依赖库,确保能够正常运行。 2. **项目分层分包**: - 按照MVC模式对项目进行分层分包,如: - `controller`:...

    jsp+jstl+servlet所需要的全部包

    Servlet是JSP的基础,因为每个JSP页面在运行时都会被转换为一个Servlet。Servlet生命周期包括加载、实例化、初始化、服务、销毁等阶段,使得它们能够处理多个请求并保持状态。 3. **JSTL(JavaServer Pages ...

    java Servlet.ppt

    Tomcat是一个开源的Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,使得开发者可以使用Java语言来编写动态Web应用。Tomcat的目录结构中,bin目录存储可执行文件和脚本,conf目录包含服务器配置...

    JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能( 源码打包)

    通过解压并分析这些文件,开发者可以学习到如何将JSP、JavaBean和Servlet整合在一起,实现用户管理的核心功能,这对于初学者或希望提升Web开发技能的开发者来说,是一个宝贵的资源。 总之,JSP+JavaBean+Servlet...

    servlet-api-3.0.zip

    Servlet API 3.0是Java Web开发中的一个重要组成部分,它定义了服务器端应用程序与Web容器之间的接口标准。这个"Servlet-API-3.0.zip"压缩包包含的是Servlet 3.0规范的API jar文件,该文件是开发和运行基于Java的Web...

    Java_Servlet.zip_servlet

    1. 加载与实例化:当服务器启动或首次接收到对Servlet的请求时,会加载Servlet类并创建一个Servlet实例。 2. 初始化:实例化后,服务器调用Servlet的init()方法进行初始化,一般用于配置Servlet。 3. 服务:每当有新...

    servlet 3.0 jar 包综合下载

    Servlet 3.0是Java EE(企业版)平台中的一个重要组成部分,它定义了服务器端Java应用程序接口,使得开发者能够创建动态、交互式的Web应用程序。在Servlet 3.0规范中,引入了许多新特性,旨在提高开发效率、简化编程...

Global site tag (gtag.js) - Google Analytics