`
qyzone
  • 浏览: 5818 次
社区版块
存档分类
最新评论

Servlet处理form的一些封装应用

阅读更多

     我们在平时写程序时都会利用各种各样的框架,从而提升工作效率和代码质量,其实框架归根到底是由底层的代码搭建起来,打好基础是非常重要;下面主要想谈谈Servlet如何把从提交form表单时传来的参数封装在一个class里,并且对其进行解析调用,其中涉及的知识点主要是Servlet和Java反射机制。

 

Servlet基本知识:

1、Servlet的框架是由两个Java包组成的:javax.servletjavax.servlet.http

2、Servlet的生命周期:

  (一)初始化阶段:init方法;

  (二)响应客户请求阶段:service方法;

  (三)终止阶段:destroy方法 

 

Java反射机制的基本介绍: 

 

       1、Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fieldsmethods的所有信息,并可于运行时改变fields内容或唤起methods

       2、Java反射机制容许程序在运行时加载、探知、使用编译期间完全未知的classes

 

     换言之,Java可以加载一个运行时才得知名称的class,获得其完整结构

public abstract class TestAction extends HttpServlet {

	protected HttpServletRequest request; //请求对象
	protected HttpServletResponse response;//响应对象
	private ActionForm actionForm;

	/**
	 * 初始化
	 * @param request
	 * @param response
	 * @throws ServletException
	 * @throws IOException
	 */
	private void init(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		 init(formClass);//实例化继承ActionForm父类的子类class
		 initField();// 初始化ActionForm 变量
	}
	
	@Override
	protected void service(HttpServletRequest request,HttpServletResponse response) {
		//处理请求
		/**如果想获取form表单提交时的变量信息,可根据ActionForm表单class对应变量的get和set方法获取**/
	}
	
	private void initField() {
	Field[] fields = actionForm.getClass().getDeclaredFields();//返回的是classr的声明变量的集合
	for (Field field : fields) {//遍历
	String fieldName = field.getName();//获取变量名
         String[] values = request.getParameterValues(fieldName);//基于servlet 的 request请求方法
	Class<?> type = field.getType();//变量的类型
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String setMethodName = "set" + firstLetter + fieldName.substring(1);//拼成变量生成的get和set的方法
	Method setMethod;
			try {
				setMethod = actionForm.getClass().getMethod(setMethodName,new Class[] { type });
				setMethod.invoke(actionForm, values);//把页面传来的变量set到class对应的变量上
			} catch (Exception e) {
			}
		}
	}
	
	/**
	 * 销毁
	 */
	@Override
	public void destroy() {
		super.destroy();
	}
} 

  

 

By cq

分享到:
评论

相关推荐

    JessMA Java Web 应用开发框架 (v3.2.2-20130815).pdf

    同时,JessMA为应用开发提供了大量Util工具,用来处理应用程序开发过程中通常会遇到的一般性问题,进一步减少应用程序开发者的工作负担。 6) 平缓的学习曲线:学习使用JessMA只需掌握一定的Core Java与JSP/Servlet...

    基于JSP+JavaBean+Servlet三层架构员工考勤管理系统源码+数据库+项目说明.zip

    4) 通过JSP中的标签的href属性 或 form的action属性 或 js代码的自定义提交方法进行跳转到Servlet层 5) Servlet层调用Dao层的操作数据库的方法,包括: 数据库的增删改查。添加、删除、查询、多表查询、模糊搜索。 ...

    BaseServlet

    一:一个Servlet可以同时处理多个请求(根据方法名自动对应)。 二:自动封装Form表单参数到实体。 三:封装了怼上传图片、文件的处理,调用一行代码,自动封装到实体类并将图片、文件上传到服务器。 四:百度编辑器...

    javaBean实验报告.doc

    掌握JSP、JavaBean和Servlet综合应用的基本原则 二、实验要求 创建一个WEB应用,综合利用JSP、JavaBean和Servlet技术实现用户登录(注册功能 选做)。程序至少包含:一个登录页面login.jsp,一个欢迎页面hello.jsp...

    j2ee学习路径 对初学者很有帮助

    面向对象-封装、继承、多态 内存的分析 递归 集合类、泛型、自动打包与解包、Annotation IO 多线程、线程同步 TCP/UDP AWT、事件模型、匿名类 正则表达式 反射机制 2:数据库(Oracle或者MySQL) SQL语句 多表...

    超级有影响力霸气的Java面试题大全文档

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。  对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器...

    Struts原理、开发及项目实施

    然后结合一个实例,详细讨论了Struts在实际开发过程中的应用,最后提供一些在开发过程中积累的经验,供大家参考。 &lt;br/&gt;2、关键词 Struts、MVC、J2EE、Tiles、Framework &lt;br/&gt;3、Framework ...

    外文翻译 stus MVC

    An incoming event is normally in the form of an HTTP request, which the servlet Container turns into an HttpServletRequest. The Controller looks at the incoming event and dispatches the request to an ...

    书籍:一个Java网络课程期末实训小项目,详细介绍见readme文件

    dao包:数据访问,对数据库的一些封装操作。 实体包:实体类,javabean构建,视图层和数据库之间的主轴作用。 V(视图层) Jsp页面:与用户进行交互的界面。 C(控制器层) servlet包:控制层,处理视图层Jsp...

    从J2SE到J2EE知识点介绍

    8.类的封装 11 9.实例成员和类成员 13 (四).类的继承 14 1.创建子类 14 2.this引用、super引用 16 3.最终类和抽象类 18 (五).类的多态性 18 1. 方法的重载 18 2. 方法的覆盖 18 (六).接口 20 1. 定义接口 20 2...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    可是,servlet也存在一个严重问题,因为所有的HTML输出必须像下面这段代码那样封装在string对象里,所以servlet将HTML标签发送给浏览器时既繁琐又容易出错: 这大大增加了编程的难度,而且即便是对网页在表现方面的...

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    java 面试题 总结

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。 对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上...

    file java 上传 下载

    当上传文件大于缓冲区大小时, fileupload组件将使用临时文ServletFileUpload 负责处理上传的文件数据,并将表单中每个输入项封装成一个 FileItem 对象中。常用方法有: boolean isMultipartContent...

    java 编写文件上传类简单易用

    form action="/servlet/ReceiveServlet" ENCTYPE="multipart/form-data" method=post &gt; C)提交请求 提交请求的过程由浏览器完成的,并且遵循 HTTP 协议,每一个从浏览器端到服务器端的一个请求,都包含了...

    JavaScript完全自学宝典 源代码

    \testJson\src\jsonExercise\JSONServlet.java 处理页面请求的Servlet。 \testJson\src\jsonExercise\ComdtyBean.java 商品信息的POJO。 \testJson\WebRoot\orderInfo.jsp 录入商品信息的JSP页面。 第21...

    Java学习笔记-个人整理的

    {14.3.1}SAX应用}{206}{subsection.14.3.1} {14.4}dom4j}{207}{section.14.4} {14.5}XPath}{210}{section.14.5} {14.6}apache.commons}{211}{section.14.6} {15}sqlite3}{213}{chapter.15} {16}Web基础}{215}{...

    轻松搞定Extjs_原创

    二、从Servlet获取当前页数据 74 三、创建ComboBox 76 四、小结 77 第十三章:面板(Panel) 78 一、漂亮的窗格从这里开始 78 二、Ext.Panel类 78 三、小结 83 第十四章:Panel的子类——Window窗口 85 一、概述 85 ...

Global site tag (gtag.js) - Google Analytics