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文件就不贴了
分享到:
相关推荐
处理视图模板文件的servlet基类; 继承:HttpServlet类 重写了init()方法: 1.获取ServletContext对象 2.创建Thymeleaf解析器对象 3.给解析器对象设置参数(前缀、后缀、缓存过期时间、是否缓存、编码方式) 4....
### Servlet的基类和接口中的方法总结 #### 1. javax.servlet.Servlet接口 Servlet接口是Java Web开发中非常重要的组成部分,它定义了Servlet类需要实现的一系列生命周期方法,包括初始化、服务请求处理以及销毁等...
### 虚基类的使用实例详解 #### 一、虚基类概念解析 在C++中,虚基类主要用于解决多继承中的钻石问题(即多个派生类继承自同一个基类,而这些派生类又被另一个类继承,形成一个钻石形状的继承结构)。当一个类同时...
1. `Servlet`: 这是所有Servlet的基类,定义了Servlet的基本行为。 2. `GenericServlet`: 它实现了`Servlet`和`ServletConfig`接口,提供了一种通用的Servlet实现,适用于非HTTP协议。 3. `HttpServlet`: 专门为处理...
- `Servlet`: 这是所有Servlet的基类,定义了Servlet的基本行为,如初始化、服务和销毁方法。 - `GenericServlet`: 一个抽象Servlet类,实现了Servlet和ServletConfig接口,提供了一种通用的方法来处理多种协议。 ...
C#基类是其核心部分,提供了丰富的类库,让开发者能够快速构建功能强大的应用程序。以下是对标题和描述中提及的一些关键知识点的详细解释: 1. **ASP.NET类库**:ASP.NET是微软开发的一个用于构建Web应用程序的框架...
- `Servlet`: 这是所有Servlet的基类,定义了Servlet的基本方法,如`init()`(初始化Servlet)、`service()`(处理请求)和`destroy()`(销毁Servlet)。 - `GenericServlet`: 它实现了`Servlet`接口,提供了通用...
1. **Servlet**:这是所有服务器端Java小程序的基类,实现了Servlet接口。用户自定义的Servlet类需要继承`javax.servlet.Servlet`或更具体的抽象类,如`javax.servlet.http.HttpServlet`,来处理HTTP请求。 2. **...
- `javax.servlet.GenericServlet`:抽象类,实现了Servlet和ServletConfig接口,提供通用的、与协议无关的Servlet基类。 - `javax.servlet.http.HttpServlet`:专为HTTP协议设计的Servlet抽象类,继承自...
1.定义基类Shape,这有求面积的虚方法Mianji();求周长的虚方法Zhouchang()。 2.定义Shape类的派生类三角形Tangle,使用base关键字调用基类构造函数,重写Shape类继承的虚方法:求面积虚方法Mianji(),求周长虚...
这个压缩包文件“C#基类整理C#比较全的基类集合”可能包含了一系列C#基础类的代码示例和解释,帮助开发者理解和运用这些类。 首先,我们来看一下C#中的几个关键基类: 1. **System.Object**:所有C#类的终极基类,...
1. javax.servlet.Servlet:所有Servlet的基类,定义了Servlet的基本行为。 2. javax.servlet.http.HttpServlet:HttpServlet是Servlet的子类,专门处理HTTP协议的请求。 3. javax.servlet.ServletConfig:为Servlet...
- `Servlet`:所有Servlet的基类,定义了`init()`, `service()`, `destroy()`等方法。 - `GenericServlet`:抽象类,实现了Servlet接口,提供了通用的`service()`方法,适用于多种协议。 - `HttpServlet`:扩展了...
《.Net 基类积累:深入理解和应用》 在.NET框架中,基类是所有对象的起点,它们提供了一组通用的功能,为其他类提供了基础。Asp.Net中的基类尤其重要,因为它们构成了Web应用程序的核心结构。本文将深入探讨一些...
"多继承和虚基类PPT" 本资源总结了C++中的多继承和虚基类的概念和应用。多继承是指一个派生类可以继承多个基类的成员,包括数据成员和函数成员。虚基类是解决多继承中出现的命名冲突和继承路径复杂性的机制。 多...
1. `javax.servlet.Servlet`:这是所有Servlet的基类,定义了Servlet的基本行为。虽然通常我们不会直接继承这个类,但会实现`Servlet`接口的子接口`javax.servlet.GenericServlet`或`javax.servlet....
1. `javax.servlet.Servlet`:这是所有Servlet类的基类,定义了Servlet的基本行为,如初始化、服务和销毁。 2. `javax.servlet.http.HttpServlet`:HttpServlet是Servlet的一个子接口,专门用于处理HTTP请求,提供了...
1. `javax.servlet.Servlet`:这是所有Servlet的基类,定义了Servlet的基本行为。虽然通常我们不会直接继承这个类,但可以通过实现`Servlet`接口来创建自定义Servlet。 2. `javax.servlet....