`
lgx2351
  • 浏览: 175947 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

HttpServletRequest的处理封装(将不断更新)

阅读更多

不多说了,时常工作整理的,直接上代码吧,欢迎大家多提意见。

public class HttpRequestMgrComAction {
	private HttpServletRequest request = null;
	private HttpServletResponse response = null;
	
	public HttpRequestMgrComAction(HttpServletRequest request,HttpServletResponse response){
		this.request = request;
		this.response = response;
	}
	/**
	 * 判断参数是否为空
	 * @param 
	 * @return
	 * @throws Exception
	 */
	public boolean isParamStrValid(String s)throws Exception{
		boolean result = true;
		if((s==null)||("null".equalsIgnoreCase(s))||("".equalsIgnoreCase(s))){
			result = false;
		}
		return result;
	}
	/**
	 * 当参数为空时给出默认值
	 * (处理参数时,一种是用默认值,如果传入的参数必填的话,则要在程序中抛出异常,而不是给出默认值。)
	 * @param
	 * @return 
	 * @exception
	 * @author liugx
	 */	
	public String setDefaultIfMissing(String s,String replacement) throws Exception{
		String result = s;
		try{
			if(!this.isParamStrValid(result)){
				result = replacement;
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}
		return result;
	}
	/**
	 * 对参数进行解码操作
	 * @param str
	 * @return
	 * @throws Exception
	 * @author liugx
	 */
	public String decodeUrlParam(String s) throws Exception{
		String result = s;
	     try{   
	    	 result = java.net.URLDecoder.decode(result, "UTF-8");               
	     }catch (Exception ex){   
	         System.out.println(ex.getMessage());   
	         ex.printStackTrace();   
	     }   
	     return result;   
	 } 
	/**
	 * 过虑表单的特殊字符
	 * @param
	 * @return 
	 * @exception
	 * @author liugx
	 */		
	public String filterSpecialChars(String s){
		if(!hasSpecialChars(s)) return s;
		StringBuffer sb = new StringBuffer(s.length());
		char c;
		for(int i=0;i<s.length();i++){
			c = s.charAt(i);
			switch(c){
				case '<':sb.append("&lt;");break; 
				case '>':sb.append("&qt;");break;
				case '"':sb.append("&quot;");break;
				case '&':sb.append("&amp;");break;
				default:sb.append(c);
			}
		}
		return sb.toString();
	}
	/**
	 * 得到压缩输出
	 * @return
	 * @throws Exception
	 * @author liugx
	 */
	public PrintWriter getGzipPrintWriter()throws Exception{
		PrintWriter out;
		if(isGzipSupoorted()){
			out = new PrintWriter(new GZIPOutputStream(this.response.getOutputStream()));
		}else{
			out = response.getWriter();
		}
		return out;
	}
	/**
	 * 关闭压缩输出
	 * @return
	 * @throws Exception
	 * @author liugx
	 */
	public void closeGzipPrintWriter(PrintWriter out) throws Exception{
		out.close();
	}

	/**
	 * 表单是否含有特殊字符
	 * @param
	 * @return
	 * @exception
	 * @author liugx
	 */
	private static boolean hasSpecialChars(String input){
		boolean flag = false;
		if((input!=null)&&(input.length()>0)){
			char c;
			for(int i=0;i<input.length();i++){
				c = input.charAt(i);
				switch(c){
					case '<':flag = true;break; 
					case '>':flag = true;break; 
					case '"':flag = true;break; 
					case '&':flag = true;break; 
				}
			}
		}
		return flag;
	}
	/**
	 * 是否支持压缩格式的传送
	 * @param
	 * @return
	 * @exception
	 * @author liugx
	 */
	private boolean isGzipSupoorted(){
		String encoding = this.request.getHeader("Accept-Encoding");
		return ((encoding != null)&&(encoding.indexOf("gzip")!=-1));
	}
	public HttpServletRequest getRequest() {
		return request;
	}
	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}
	public HttpServletResponse getResponse() {
		return response;
	}
	public void setResponse(HttpServletResponse response) {
		this.response = response;
	}
}
 
分享到:
评论

相关推荐

    webwork与struts处理上的异同(1) .txt

    本文将重点探讨WebWork与Struts在处理机制上的异同之处,旨在为开发者提供更加清晰的选择依据。 #### 二、Struts与WebWork简介 1. **Struts**: - Struts是一个开源的MVC框架,它最早出现于2000年左右。 - 使用...

    怎么在webx3中取得cookie的值

    通过阅读Webx3的源码,我们可以查看它如何封装和暴露HttpServletRequest的方法,以及在内部如何处理Cookie的读写。这有助于我们优化性能,解决潜在问题,甚至扩展框架的功能。 至于“工具”,开发者可以利用各种IDE...

    JavaWeb网上商城的设计与实现文档.docx

    在实际的项目结构中,网上商城的后台管理系统和前台通常会有类似的组织形式,包括JavaBean类(用于数据封装)、Dao接口类(定义数据操作)、Dao接口实现类(具体实现数据操作)以及控制类(处理请求和响应)。...

    简单的JSP+JavaBean+Servlet的使用

    3. 将处理结果设置到`HttpServletRequest`或`HttpSession`中,然后转发到JSP页面。 4. 在JSP页面中,通过EL(Expression Language)或JSTL(JavaServer Pages Standard Tag Library)访问请求和会话数据,生成动态...

    JavaWeb笔记包含JDBC、Servlet

    Servlet接收HTTP请求,通过JDBC与数据库交互,获取或更新数据,然后将结果封装成HTTP响应返回给客户端。 总结起来,JavaWeb技术的两大基石——JDBC和Servlet,为开发者提供了强大的工具,使得构建高效、可靠的Web...

    一个JAVAWEB整合的小项目

    你需要理解Servlet的生命周期,学会如何编写Servlet代码来处理GET和POST请求,并利用HttpServletResponse和HttpServletRequest对象来读写请求和响应数据。 其次,JSP(JavaServer Pages)是一种动态网页技术,它...

    J2EE 的 练习题(部分)

    此外,Servlet还可以利用HttpSession、HttpServletRequest和HttpServletResponse对象来处理会话、获取请求参数和响应数据。 4. 数据库连接: 在J2EE应用中,通常使用JDBC(Java Database Connectivity)接口来与...

    javafileUpload文件上传

    4. **处理文件上传**:在`doPost`方法中,我们可以通过`HttpServletRequest`对象的`getParts()`方法获取到上传的文件部分。每个`Part`对象代表一个表单字段,我们可以调用`Part`的`write`方法将文件保存到服务器的...

    Servlet生命周期,http

    `HttpServletRequest`对象封装了客户端的请求信息,如请求参数、请求头、请求URI等,我们可以通过其提供的API来获取这些信息。例如,`getParameter()`用于获取请求参数,`getHeader()`用于获取请求头。而`...

    JSP入门教程

    - 数据被封装在`HttpServletRequest`(request)对象中,由JSP引擎传递给服务器端组件(如JavaBeans、Servlet或Enterprise Beans)进行处理。 - 组件处理数据后,将结果封装在`HttpServletResponse`(response)...

    文件上传fileupload

    文件上传在IT行业中是一项基础但重要的功能,尤其是在Web应用程序中,用户经常需要上传图片、文档或其他类型的文件。Apache FileUpload库是Java平台上...同时,不断关注和更新库版本,以获得最新的安全修复和性能优化。

    JSP和Servlet整合

    MVC模式将应用程序分为三个主要部分:模型(Model)负责业务逻辑和数据处理,视图(View)负责显示用户界面,控制器(Controller)处理用户请求并协调模型和视图。 1. **JSP访问原理**: - 当用户通过浏览器发送...

    java web 上传功能

    在Java Web开发中,上传功能是一项常见的需求,用于允许用户上传图片、文档等文件到服务器。本项目利用DAO(Data Access Object)设计模式实现了这样一...实践中不断学习和改进,将使你对Java Web开发有更深入的理解。

    Servlet初学必备,精华笔记

    - `HttpServletRequest`:封装了客户端的请求信息,如参数、头信息和请求方法。 - `HttpServletResponse`:用于构建并发送响应到客户端,包括状态码、头部信息和响应体。 - `ServletConfig`:提供了Servlet的配置...

    基于简单的MVC结构自己搭建Struts框架完整版(三)

    在Struts框架中,模型负责业务逻辑,视图负责数据展示,控制器负责接收用户请求并调用模型进行处理,然后更新视图。 1. **模型(Model)**:在Struts中,模型通常由JavaBean类实现,它们包含业务逻辑和数据。当控制...

    JSP高级编程源代码

    **JSP(Java Server Pages)**是一种动态网页技术,它允许开发者将静态HTML与Java代码结合起来,以创建...在实践过程中,不断优化代码结构,提高代码复用性,以及运用设计模式,都将有助于成长为一名出色的Web开发者。

    JavaServlet程序设计初步

    Servlet通过`HttpServletRequest`和`HttpServletResponse`对象与客户端进行交互。前者封装了客户端发送的请求信息,后者则用于构造并返回响应。 六、Servlet的多线程问题 由于一个Servlet实例可能服务于多个并发...

    jquery与servlet交互

    // 将结果封装成JSON对象并返回 response.setContentType("application/json"); response.getWriter().write("{\"valid\":" + isValid + "}"); } private boolean validateUser(String username, String email...

    JspServletBean example

    Servlet接收请求,处理业务逻辑,更新Bean的状态,然后将Bean传递给JSP进行显示。 总的来说,JspServletBean的使用是Web开发中的基础技能,它允许我们构建动态、结构清晰的Web应用。通过熟练掌握这一技术,开发者...

    android 服务器+客户端的简单案例

    2. 请求参数:在POST请求中,需要将数据封装到请求体中。 3. 异步处理:Android客户端应使用异步方式发送请求,避免阻塞UI线程。 4. 错误处理:客户端需要处理网络错误、服务器错误等各种异常情况。 5. 安全性:考虑...

Global site tag (gtag.js) - Google Analytics