webstorm汉化包 npm安装 elasticsearch pdf tcp pygame gtk nginx视频 git视频 access教学视频 python数据挖掘实战pdf linux环境变量生效 div外边距 hbase集群搭建 ajax里面可以嵌套ajax吗 mysql分区表优劣分析 excel加减混合求和 flutter ui构建工具 python条件判断 python学习网站 python位操作 python排序 python建站 java使用 java的方法 如何查看java版本 java连接sql数据库 java抛出自定义异常 java网页 vbs表白代码 刺激战场脚本 电脑密码查看器 脚本 为什么英雄联盟无法连接服务器 战斗的召唤 数独软件 spss20安装教程 微信小程序开发实例 网红照片男 一键换肤大师
当前位置: 首页 > 学习教程  > 编程语言

工具类之------Servlet封装

2020/12/5 10:13:53 文章标签:

1.在执行页面跳转和处理数据时,每个业务可能都需要建一个Servlet,为了解决代码冗余,方便管理,进行Servlet封装操作 import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;import javax.servlet.ServletExceptio…

1.在执行页面跳转和处理数据时,每个业务可能都需要建一个Servlet,为了解决代码冗余,方便管理,进行Servlet封装操作

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
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;
	
	//覆盖HttpServlet中的service方法,执行自己的业务方法
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		//获取方法名
		String methodName = request.getParameter("method") ;
		System.out.println(methodName);
		//若参数名为null
		if(methodName==null) {
			//赋值操作
			methodName = "index" ;
		}
		//若参数名不为null
			try {
				//获取当前类的字节码文件对象
				Class clazz = this.getClass() ;
				//通过字节码文件对象获取当前类的实例
				System.out.println(clazz);
				Object obj = clazz.newInstance() ;
				
				//获取子类的成员方法
				Method m = clazz.getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class) ;
				//执行当前成员方法
				String str = (String) m.invoke(obj, request,response) ;

				if(str!=null) {
					//请求转发
					request.getRequestDispatcher(str).forward(request, response);
				}
			} catch (Exception e) {
				e.printStackTrace();
				throw new RuntimeException() ;
			}
		}
	
	public String index(HttpServletRequest request,HttpServletResponse response) {
		return null ;
	}	
}:可以保存下来,后面写Servlet业务直接继承即可

2.Servlet封装的应用(举个栗子)

@WebServlet("/book")
//继承自上面的BaseServlet类
public class BookServlet extends BaseServlet {
	private static final long serialVersionUID = 1L;
	//执行自己的业务,只需要写自己的方法即可
	public String getBook(HttpServletRequest request) {
		//获取存储在Session中,名为book的内容
		Book book = (Book)request.getSession().getAttribute("book");
		//进行业务操作
		-------
		//可以直接请求转发进行跳转
		return "/jsp/index.jsp";
	}
}:类中可写多个同类方法,里面的方法以及业务只是例子,可以根据需求自行书写,添加

3.注意

  • 不需要再写解决请求中文乱码相关语句,上一个文章讲解了进行全局过滤的操作,可供参考了解
  • 在jsp文件中的跳转地址或者提交地址变为${pageContext.request.contextPath}/book?method=getBook&参数名称=值
  • 无参可以不缀&后续(可以依据上面的例子对照)

本文链接: http://www.dtmao.cc/news_show_450169.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?