在实际的项目开发中,如果没有用到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>
分享到:
相关推荐
而JavaEE(Java Enterprise Edition),现在称为Jakarta EE,是一个用于构建企业级分布式应用的平台,它包含了JavaWeb的所有组件,并提供了更多的服务,如EJB(Enterprise JavaBeans)、JMS(Java Message Service)...
Servlet API, 是用来写servlet的, 编写servlet是已没有CGI脚本那样诸如关心一个servlet是这样被装载, servlet运行的服务器环境是什么, 或者用来传输数据的协议是什么等等,这样servlets就可以融合在不同的web服务器...
当我们说一个Servlet是线程不安全的,意味着在多线程环境下,该Servlet的行为可能会出现问题,如数据混乱、竞态条件或死锁。 首先,让我们深入理解Servlet的工作原理。当一个HTTP请求到达Web服务器,服务器会创建一...
- 加载:当服务器启动或者第一次请求Servlet时,会加载Servlet类并创建一个Servlet实例。 - 初始化:Servlet实例被创建后,服务器会调用Servlet的init()方法进行初始化,通常在这里进行一些全局设置。 - 服务:...
9. **多线程**:Servlet默认是线程安全的,一个Servlet实例可以服务于多个并发请求。开发者需要注意同步问题,避免在Servlet中使用静态变量存储请求相关数据。 10. **过滤器(Filter)**:Servlet API还提供了过滤...
1. **高效**:由于Servlet在服务器端运行,首次请求激活后,它会在后台持续运行,等待后续请求,每个请求都会在一个单独的线程中处理,而不是创建新的进程,从而提高了效率。 2. **方便**:Servlet提供了一系列实用...
Java Servlet 规范版本 3.1 是一个由 Oracle Corporation 维护的服务器端 Java 技术,用于扩展服务器的功能,特别适合于扩展 Web 服务器的功能。它定义了 Java 类的 API,用于响应 Web 请求,并在服务器上进行服务,...
在本"Servlet Demo"项目中,我们将深入探讨Servlet的基本概念、生命周期、以及如何创建和部署一个简单的Servlet应用。 一、Servlet基础 1. **Servlet接口**:Servlet的核心接口,定义了Servlet的基本方法,如`...
Servlet是Java 2平台的重要组成部分,旨在替代CGI(Common Gateway Interface)程序,提供更高的运行效率、更好的跨平台能力和更强大的功能。 Servlet的基本原理在于,它们是100% Pure Java的,这意味着它们可以在...
具体实现方式是:当 Servlet 收到请求后,可以将耗时的业务逻辑处理委托给一个专门的异步线程来执行,而 Servlet 自身则可以立即返回至容器。这样一来,Servlet 线程不再被阻塞,可以更快地处理其他请求,从而提高了...
- 异步处理:Servlet 3.0引入了异步处理能力,允许Servlet在`service()`方法内启动一个异步操作,提高性能。 - 零停机时间部署:Servlet 3.0允许在不中断现有请求的情况下热部署更新。 7. **Filter与Listener**:...
如果请求匹配到一个Servlet,Servlet容器将创建一个Servlet实例(如果尚未创建),然后调用Servlet的相关方法来处理请求。默认情况下,Servlet容器会调用Servlet的`service()`方法,该方法会根据请求类型(GET、POST...
你可以直接将这个JAR添加到你的项目类路径中,以替代原始的JFreeChart库,从而解决项目中的包冲突问题。 总之,解决JFreeChart与servlet包的冲突是一项必要的工程实践,它涉及到对第三方库的源码修改、重新编译和...
- 使用IDEA或Eclipse等工具创建一个新的Web项目,命名为`StudentZSGC`。 - 配置项目的目录结构和依赖库,确保能够正常运行。 2. **项目分层分包**: - 按照MVC模式对项目进行分层分包,如: - `controller`:...
Servlet是JSP的基础,因为每个JSP页面在运行时都会被转换为一个Servlet。Servlet生命周期包括加载、实例化、初始化、服务、销毁等阶段,使得它们能够处理多个请求并保持状态。 3. **JSTL(JavaServer Pages ...
Tomcat是一个开源的Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,使得开发者可以使用Java语言来编写动态Web应用。Tomcat的目录结构中,bin目录存储可执行文件和脚本,conf目录包含服务器配置...
通过解压并分析这些文件,开发者可以学习到如何将JSP、JavaBean和Servlet整合在一起,实现用户管理的核心功能,这对于初学者或希望提升Web开发技能的开发者来说,是一个宝贵的资源。 总之,JSP+JavaBean+Servlet...
Servlet API 3.0是Java Web开发中的一个重要组成部分,它定义了服务器端应用程序与Web容器之间的接口标准。这个"Servlet-API-3.0.zip"压缩包包含的是Servlet 3.0规范的API jar文件,该文件是开发和运行基于Java的Web...
1. 加载与实例化:当服务器启动或首次接收到对Servlet的请求时,会加载Servlet类并创建一个Servlet实例。 2. 初始化:实例化后,服务器调用Servlet的init()方法进行初始化,一般用于配置Servlet。 3. 服务:每当有新...
Servlet 3.0是Java EE(企业版)平台中的一个重要组成部分,它定义了服务器端Java应用程序接口,使得开发者能够创建动态、交互式的Web应用程序。在Servlet 3.0规范中,引入了许多新特性,旨在提高开发效率、简化编程...