减少Servlet的一些方法

在很多的时候,我们需要创建大量的Servlet来完成数据的请求与回应,并对数据进行分析处理,

但是当我们创建了很多的Servlet的时候,就比较难以管理,那么怎么简单的处理下,让Servlet

数量少一些呢?


一般情况下form表单中的Action都是直接写上Servlet的名字,但是当多个请求需要跳转的时候,

就需要我们不断的创建servlet,这个时候我们可以把某些类型相同的Servlet放在一个一个类中,

把方法名变成Servlet的名字,下面的实例代码就是把一些Servlet放在一个类中。

package com.test;

import java.io.IOException;
import java.io.PrintWriter;

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

public class user {

	public void add(HttpServletRequest request,HttpServletResponse response){
		try {
			String name=request.getParameter("name");
			PrintWriter pw = response.getWriter();
			pw.println(name);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void del(HttpServletRequest request,HttpServletResponse response){
		System.out.println("del---------");
	}
}
同时创建一个Servlet,用来获取已经被封装到一个类中的Servlet,再利用反射来获取这些Servlet

package com.ys;

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 action extends HttpServlet {
	/*
		@author Somnus
	*/
	private static final long serialVersionUID = 1L;
       
    public action() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			try {
				Class<?> clazz = Class.forName("com.test.user");
				String path = request.getRequestURI();
				System.out.println(path);
				String name = path.substring(path.lastIndexOf("!")+1,path.lastIndexOf("."));
				System.out.println(name);
				Object object = clazz.newInstance();
				Method method = clazz.getDeclaredMethod(name, HttpServletRequest.class,HttpServletResponse.class);
				method.invoke(object, request,response);
			} catch (Exception e) {
				e.printStackTrace();
			}
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}
 下面是我的jsp界面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
	<form action="action!add.do" method="post">
		<input name="name" type="text">	
		<input type="submit">
	</form>
</body>
</html>

经过测试之后,发现成功运行,也就是说用这种方式是可以转发到Servlet的,

这种方式大大减小了Servlet的数量,有兴趣的可以尝试下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值