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

对HttpServlet的扩展与设计

阅读更多

这几天在学习Extjs中,需要用到后台与前台作数据交互,所以用了简单的servlet作后台业务处理,基于此,扩展了一下servlet的设计.

下面是JAVA代码:

 

package com.zwr.app.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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

import com.zwr.app.model.WebSiteModel;
import com.zwr.app.util.RequestParamUtil;

/**
 * extjs前台AJAX与后台交互测试Servlet
 * 
 * @author zhu wei rong
 * @since 2008-08-25
 */
@SuppressWarnings( { "serial", "unused" })
public class UserServlet extends HttpServlet {
	private final String encoding = "utf-8";

	private HttpServletRequest request;

	private HttpServletResponse response;

	protected void doBusiness() throws ServletException, IOException {
		String method = request.getParameter("method");
		if (method.equals("save")) {
			doSave();
		} else if (method.equals("list")) {
			doList();
		}
	}

	/**
	 * 测试grid分页显示数据,所有数据以json格式在JSP页面显示
	 */
	private void doList() throws ServletException, IOException {
		int start = RequestParamUtil.getIntParam(request, "start", 0);
		int limit = RequestParamUtil.getIntParam(request, "limit", 0);

		String sort = RequestParamUtil.getParam(request, "sort", null);
		String dir = RequestParamUtil.getParam(request, "dir", null);
		System.out.println(start + "\t" + limit + "\t" + sort + "\t" + dir);
		List<WebSiteModel> list = new ArrayList<WebSiteModel>();
		for (int i = 1; i <= 10; i++) {
			WebSiteModel model = new WebSiteModel();
			model.setId(i);
			model.setName("站点_" + i);
			model.setUrl("url--" + i);
			list.add(model);
		}
		int totalCount = list.size(); // 总数
		request.setAttribute("count", totalCount);
		request.setAttribute("entites", list.subList(start, (start + limit) < totalCount ? (start + limit) : totalCount));
		forward("/scripts/app/data.jsp");
	}

	private void doSave() throws ServletException, IOException {
		String name = request.getParameter("name");
		String password = request.getParameter("password");
		System.out.println("前台AJAX传递过来的参数:\t" + name + "\t" + password);
		forward("/");
	}

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding(encoding);
		response.setCharacterEncoding(encoding);
		this.request = request;
		this.response = response;
		doBusiness();
	}

	@Override
	protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		this.doGet(arg0, arg1);
	}

	public void forward(String url) throws ServletException, IOException {
		getServletContext().getRequestDispatcher(url).forward(request, response);
	}
}

 

分享到:
评论
6 楼 laiseeme 2008-09-01  
那个web。xml就够你忙乎的
5 楼 stworthy 2008-09-01  
最少应该包装一下Servlet,或者做一个简单的Dispatcher。否则Servlet也太多了。
4 楼 vvgg 2008-09-01  
有多线程问题
3 楼 wangxin0072000 2008-09-01  
Struts中有个dispatch的概念,为什么不只用这种方式呢?你的这种方式耦合度太高了,很难有效的扩展。我只做过Struts,我相信几乎所有的web MVC框架都有这个功能,而且做的更有弹性和扩展性。而且实在没看出来doSave是做什么用的,而且如果目的是扩展HttpServlet,这个方法至少应该是protected的吧。
2 楼 wtusmchen 2008-09-01  
连struts都拼错了,失败
1 楼 wtusmchen 2008-09-01  
看似有很多问题:
1.一个模块一个servlet,配置起来太麻烦,建议你用spring
2.private HttpServletRequest request;在servlet里面定义变量,这个应该有多线程问题
3.Ext与后台交互是通过ajax,request.setAttribute,然后forward明显是strtus的习惯,你forward到jsp之后怎么办呢?还是要转换成josn,建议你直接在doList里面输出json,省下一个jsp文件

相关推荐

    HttpServlet 的Servlet的详解

    ### HttpServlet 详解 ...通过对`HttpServlet`的学习和理解,开发者可以更好地利用其提供的功能来提高Web应用的性能和可维护性。希望本文档能够帮助读者深入掌握`HttpServlet`的核心概念和技术细节。

    Servlet&GenericServlet&HttpServlet源码分析.zip_GenericServle_httpser

    本压缩包文件提供了对这三种Servlet的源码分析,对于深入理解Servlet的工作原理和扩展自定义功能至关重要。 首先,Servlet是Java Servlet API的核心接口,它定义了Web服务器与Java应用程序之间的通信规范。Servlet...

    Java Web开发: 基于HttpServlet的用户登录网站实例

    1. **Servlet**:Servlet是Java编程语言中用来扩展服务器功能的接口。HttpServlet是Servlet的一个子接口,专门用于处理HTTP协议的请求。在用户登录场景中,HttpServlet负责接收来自客户端(浏览器)的HTTP请求,执行...

    javaweb servlet(两种方式)和 filter的最简单实例

    Servlet主要用于处理HTTP请求,而Filter则用于对请求和响应进行预处理或后处理。在这个最简单的实例中,我们将深入理解这两种技术以及如何在实际项目中应用它们。 **Servlet** Servlet是一种Java类,它扩展了...

    Http Servlet一个简单的Http应用

    Servlet是Java编程语言中的一个接口,由Java Servlet API提供,用于扩展服务器的功能。本项目是一个简单的HTTP应用示例,旨在帮助理解如何使用Http Servlet进行开发。 1. **Servlet生命周期**:Servlet的生命周期...

    javaweb程序设计源代码(共20章)ch4

    在第4章中,你可能会学习如何创建Servlet,配置web.xml文件来映射URL到Servlet,以及如何使用HttpServlet类处理GET和POST请求。 JSP则是另一种用于生成动态网页的技术,它允许开发者在HTML页面中嵌入Java代码。JSP...

    数据结构课程教学网站的设计与实现.pdf

    数据结构课程教学网站的设计与实现涉及了多个IT知识领域,包括网站设计的技术选型、功能需求分析、数据库的建立以及用户安全认证等方面。下面将详细阐述这些知识点。 一、网站设计的技术选型与实现 数据结构课程...

    基于UML的毕业设计管理系统的分析与设计.docx

    - **Web建模与UML扩展机制**:Web建模是UML扩展机制的一种应用形式,可以通过自定义版型来满足特定领域的建模需求。开发者可以根据实际需要创建新的版型,进一步增强UML的表达能力。 #### 三、毕业设计管理系统的...

    Java Web程序设计——图书借阅网站的实现——图书信息实验.docx

    Servlet通过实现Servlet接口或继承HttpServlet类来扩展其功能,常见的请求处理方法有doGet和doPost。Servlet的生命周期包括加载、初始化、服务、销毁四个阶段,这使得开发者可以在不同阶段进行特定的操作。 JSP...

    java web设计模式

    设计模式提供了一种标准的、可重用的方法来组织代码,提高可读性、可维护性和可扩展性。以下是Java Web开发中常见的一些设计模式及其详细解释: 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。在...

    java ee课程设计

    1. **Servlet**:Servlet是Java编程语言中用于扩展服务器功能的接口。在学生成绩管理系统中,Servlet用于处理HTTP请求,比如登录验证、成绩录入、查询等操作。Servlet通过继承HttpServlet类并重写doGet或doPost方法...

    Javaweb程序设计教材源码.rar

    1. **Servlet**:Servlet是JavaWeb的核心,它是一个Java类,用于扩展服务器的功能。Servlet可以处理HTTP请求,生成响应,并与数据库进行交互。在源码中,你可能会看到`HttpServlet`类的子类,它们覆盖`doGet`和`...

    推选JSP程序设计PPT资料.ppt

    【推选】JSP程序设计PPT资料...与CGI相比,Servlet在性能、可移植性、持久性和可扩展性方面具有显著优势,因此在现代Web开发中被广泛使用。学习和掌握这些知识点,将有助于提升开发者构建高效、稳定的Web应用的能力。

    (设计用)线构4位验证码

    根据提供的文件信息,我们可以分析并总结出以下与“设计用线构4位验证码”相关的知识点: ### 一、概述 **设计用线构4位验证码**通常是指在进行UI/UX设计时,为了模拟真实环境中的用户验证流程而创建的一种简易的...

    4.5javaEE_原生Servlet_MySql网络考试系统的设计与实现.zip

    《JavaEE原生Servlet_MySql网络考试系统的设计与实现》 在当今信息化时代,网络考试系统的开发已经成为教育领域不可或缺的一部分。本项目基于JavaEE技术,利用原生Servlet和MySql数据库,旨在构建一个高效、稳定的...

    精通struts.基于MVC的.java.web设计与开发.pdf 高清下载

    ### Struts框架精讲:基于MVC的Java Web设计与开发 #### 一、Struts框架简介 **Struts**是Apache基金会支持的一个开源项目,它是一个用于开发Java Web应用程序的MVC(Model-View-Controller)框架。Struts简化了...

    java设计模式(1)

    通过对设计模式的学习和掌握,开发者可以编写出更加健壮、可扩展和易于维护的代码。在本章中,我们介绍了设计模式的基本概念,分类以及单例模式的实现方式。未来章节将继续深入探讨其他的设计模式及其应用场景。

    java课程设计关于jsp、servlet和图形用户界面

    Servlet通过HttpServlet类进行扩展,并覆盖doGet和doPost方法来处理HTTP请求。理解Servlet配置、过滤器(Filters)和监听器(Listeners)的概念也是学习的关键。 3. 图形用户界面(GUI) 在Java中,我们可以使用...

    jsp+servlet+mysql图书馆图书借阅管理系统毕业源码案例设计.zip

    Servlet通过HttpServlet类的doGet和doPost方法来响应GET和POST请求,实现了与JSP的协同工作。 三、MySQL数据库 MySQL是一款流行的开源关系型数据库管理系统,适合于处理大量数据。本项目中,MySQL用于存储图书信息...

Global site tag (gtag.js) - Google Analytics