`
酷的飞上天空
  • 浏览: 522512 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Servlet基类AbstractServlet

阅读更多

AbstractServlet类主要是对一些常用的方法进行扩展

内容如下

public class AbstractServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;
	private static String resultPage = "result.jsp";

	/**
	 * 
	 * @return /tmp 的实际路径
	 */
	public String getTmp() {
		return getServletContext().getRealPath("/tmp");
	}

	/**
	 * 绑定数据到HttpServletRequest,使用setAttribute方法实现
	 * 
	 * @param request
	 * @param key
	 * @param data
	 */
	public void BindData(HttpServletRequest request, String key, Object data) {
		request.setAttribute(key, data);
	}

	/**
	 * 此方法仅是BindData的简略版,key为errorMsg。多次调用此方法则只记录最后一次的数据。
	 * 绑定数据到HttpServletRequest,使用setAttribute方法实现,
	 * 
	 * @param request
	 * @param data
	 */
	public void BindErrorData(HttpServletRequest request, Object data) {
		BindData(request, "errorMsg", data);
	}

	/**
	 * 转发到/WEB-INF/jsp/目录下的jspName文件
	 * 
	 * @param jspPath
	 * @param req
	 * @param resp
	 * @throws ServletException
	 * @throws IOException
	 */
	public void forward(String jspName, HttpServletRequest req,
			HttpServletResponse resp) throws ServletException, IOException {
		req.getRequestDispatcher("/WEB-INF/jsp/" + jspName).forward(req, resp);
	}

	/**
	 * 转发到result.jsp页面
	 * 
	 * @param req
	 * @param resp
	 * @throws ServletException
	 * @throws IOException
	 */
	public void forwardResultPage(HttpServletRequest req,
			HttpServletResponse resp) throws ServletException, IOException {
		req.getRequestDispatcher("/WEB-INF/jsp/" + resultPage).forward(req,
				resp);
	}

	/**
	 * 重定向到jspPath页面,仅限本站页面,jspName为相对于当前应用的路径名。否则请用HttpServletResponse进行操作
	 * 
	 * @param jspPath
	 * @param resp
	 * @throws ServletException
	 * @throws IOException
	 */
	public void sendRedirect(String jspName, HttpServletRequest req,
			HttpServletResponse resp) throws ServletException, IOException {
		resp.sendRedirect(req.getContextPath() + "/" + jspName);
	}

	/**
	 * 将内容输出给客户端,作为Ajax调用的返回字符串。
	 * 
	 * @param resp
	 * @param content
	 * @throws ServletException
	 * @throws IOException
	 */
	public void print(HttpServletResponse resp, String content)
			throws ServletException, IOException {
		PrintWriter w = resp.getWriter();
		w.write(content);
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}

}

 具体方法不再累述,都有注释

 

贴出一个使用的例子,这个是blog主页的后台servlet

public class HomeServlet extends AbstractServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		//用户信息
		User user = BlogFilter.getBlogContext().getUser();
		ArticleDao articleDao = DaoFactory.getArticleDao();
		//主页的5篇最近发表(更新)的文章
		List<Article> articleList = articleDao.getLaterArticle(5);
		//每篇文章对应的阅读数
		List<Integer> articleSeeNum = new ArrayList<Integer>();
		//每篇文章所对应的评论数
		List<Integer> commentList = new ArrayList<Integer>();
		//每篇文章所对应的分类
		List<Category> categoryList = new ArrayList<Category>();
		//取得外站的连接列表
		List<OutLink> outLinkList = DaoFactory.getOutLinkDao().getListOutLink();
		//显示今天的日期
		String time = DateFormateUtil.getStringByDate(new Date(), "yyyy年MM月dd日");
		//显示星期几
		String dayOfWeek = DateFormateUtil.getDayOfWeek(new Date());
		//访问量
		int num = BlogFilter.getTotalNum();
		
		CommentDao commentDao = DaoFactory.getCommentDao();
		ArticleSeeDao articleSeeDao = DaoFactory.getArticleSeeDao();
		CategoryDao categoryDao = DaoFactory.getCategoryDao();
		for(int i=0;i<articleList.size();i++){
			articleSeeNum.add(i, articleSeeDao.getReadNumber(articleList.get(i).getArticleId()));
			categoryList.add(i, categoryDao.getCategory(articleList.get(i).getCategoryId()));
			commentList.add(i, commentDao.getNumOfCommentForArticle(articleList.get(i).getArticleId()));
		}
		
		BindData(req, "user", user);
		BindData(req, "articleList", articleList);
		BindData(req, "articleSeeNum", articleSeeNum);
		BindData(req, "commentList", commentList);
		BindData(req, "categoryList", categoryList);
		BindData(req, "outLinkList", outLinkList);
		BindData(req, "time", time);
		BindData(req, "dayOfWeek", dayOfWeek);
		BindData(req, "num", num);
		forward("home.jsp", req, resp);
 	}
}

 

至于home.jsp文件就不贴了

分享到:
评论

相关推荐

    ViewBaseServlet代码模板,使用了thymeleaf视图模板技术,是处理视图模板文件的Servlet基类

    处理视图模板文件的servlet基类; 继承:HttpServlet类 重写了init()方法: 1.获取ServletContext对象 2.创建Thymeleaf解析器对象 3.给解析器对象设置参数(前缀、后缀、缓存过期时间、是否缓存、编码方式) 4....

    Servlet的基类和接口中的方法总结

    ### Servlet的基类和接口中的方法总结 #### 1. javax.servlet.Servlet接口 Servlet接口是Java Web开发中非常重要的组成部分,它定义了Servlet类需要实现的一系列生命周期方法,包括初始化、服务请求处理以及销毁等...

    虚基类的使用实例

    ### 虚基类的使用实例详解 #### 一、虚基类概念解析 在C++中,虚基类主要用于解决多继承中的钻石问题(即多个派生类继承自同一个基类,而这些派生类又被另一个类继承,形成一个钻石形状的继承结构)。当一个类同时...

    servlet必备(servlet.jar+servlet api)

    1. `Servlet`: 这是所有Servlet的基类,定义了Servlet的基本行为。 2. `GenericServlet`: 它实现了`Servlet`和`ServletConfig`接口,提供了一种通用的Servlet实现,适用于非HTTP协议。 3. `HttpServlet`: 专门为处理...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    - `Servlet`: 这是所有Servlet的基类,定义了Servlet的基本行为,如初始化、服务和销毁方法。 - `GenericServlet`: 一个抽象Servlet类,实现了Servlet和ServletConfig接口,提供了一种通用的方法来处理多种协议。 ...

    C#基类整理

    C#基类是其核心部分,提供了丰富的类库,让开发者能够快速构建功能强大的应用程序。以下是对标题和描述中提及的一些关键知识点的详细解释: 1. **ASP.NET类库**:ASP.NET是微软开发的一个用于构建Web应用程序的框架...

    servlet-api.jar 下载地址

    - `Servlet`: 这是所有Servlet的基类,定义了Servlet的基本方法,如`init()`(初始化Servlet)、`service()`(处理请求)和`destroy()`(销毁Servlet)。 - `GenericServlet`: 它实现了`Servlet`接口,提供了通用...

    用于servlet程序的开发的servlet-jar包

    1. **Servlet**:这是所有服务器端Java小程序的基类,实现了Servlet接口。用户自定义的Servlet类需要继承`javax.servlet.Servlet`或更具体的抽象类,如`javax.servlet.http.HttpServlet`,来处理HTTP请求。 2. **...

    第10章 Java Servlet技术.ppt

    - `javax.servlet.GenericServlet`:抽象类,实现了Servlet和ServletConfig接口,提供通用的、与协议无关的Servlet基类。 - `javax.servlet.http.HttpServlet`:专为HTTP协议设计的Servlet抽象类,继承自...

    C#定义基类并重写基类方法计算图形面积和周长的windows界面程序

    1.定义基类Shape,这有求面积的虚方法Mianji();求周长的虚方法Zhouchang()。 2.定义Shape类的派生类三角形Tangle,使用base关键字调用基类构造函数,重写Shape类继承的虚方法:求面积虚方法Mianji(),求周长虚...

    C#基类整理C#比较全的基类集合

    这个压缩包文件“C#基类整理C#比较全的基类集合”可能包含了一系列C#基础类的代码示例和解释,帮助开发者理解和运用这些类。 首先,我们来看一下C#中的几个关键基类: 1. **System.Object**:所有C#类的终极基类,...

    servlet.jar包

    1. javax.servlet.Servlet:所有Servlet的基类,定义了Servlet的基本行为。 2. javax.servlet.http.HttpServlet:HttpServlet是Servlet的子类,专门处理HTTP协议的请求。 3. javax.servlet.ServletConfig:为Servlet...

    servlet api servlet api

    - `Servlet`:所有Servlet的基类,定义了`init()`, `service()`, `destroy()`等方法。 - `GenericServlet`:抽象类,实现了Servlet接口,提供了通用的`service()`方法,适用于多种协议。 - `HttpServlet`:扩展了...

    .Net 基类积累

    《.Net 基类积累:深入理解和应用》 在.NET框架中,基类是所有对象的起点,它们提供了一组通用的功能,为其他类提供了基础。Asp.Net中的基类尤其重要,因为它们构成了Web应用程序的核心结构。本文将深入探讨一些...

    多继承和虚基类PPT

    "多继承和虚基类PPT" 本资源总结了C++中的多继承和虚基类的概念和应用。多继承是指一个派生类可以继承多个基类的成员,包括数据成员和函数成员。虚基类是解决多继承中出现的命名冲突和继承路径复杂性的机制。 多...

    javax-servlet-api-3.0.1.jar

    1. `javax.servlet.Servlet`:这是所有Servlet的基类,定义了Servlet的基本行为。虽然通常我们不会直接继承这个类,但会实现`Servlet`接口的子接口`javax.servlet.GenericServlet`或`javax.servlet....

    servlet api 与servlet src

    1. `javax.servlet.Servlet`:这是所有Servlet类的基类,定义了Servlet的基本行为,如初始化、服务和销毁。 2. `javax.servlet.http.HttpServlet`:HttpServlet是Servlet的一个子接口,专门用于处理HTTP请求,提供了...

    Servlet API中文文档

    1. `javax.servlet.Servlet`:这是所有Servlet的基类,定义了Servlet的基本行为。虽然通常我们不会直接继承这个类,但可以通过实现`Servlet`接口来创建自定义Servlet。 2. `javax.servlet....

Global site tag (gtag.js) - Google Analytics