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....
javax.servlet.Servlet接口 servlet接口中的方法 javax.servlet.http.HttpServlet类(HTTP版本)
dao层基类dao层基类dao层基类dao层基类dao层基类
C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类
DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类...
我收集的C#基类,比较全.我收集的C#基类,比较全. 包含有: ASP.NET类库 C#读取AD域里用户名或组 Common类库 DotNet基础类大全 SqlHelper基类 字符串加密
1.定义基类Shape,这有求面积的虚方法Mianji();求周长的虚方法Zhouchang()。 2.定义Shape类的派生类三角形Tangle,使用base关键字调用基类构造函数,重写Shape类继承的虚方法:求面积虚方法Mianji(),求周长虚...
C#基类集合
c# xml 操作 基类
函数隐藏是指派生类中函数与基类中的函数同名,但是这个函数在基类中并没有被定义为虚函数,这种情况就是函数的隐藏。 所谓隐藏是指使用常规的调用方法,派生类对象访问这个函数时,会优先访问派生类中的这个函数,...
很好的控件基类
使用vc6.0编写的关于虚基类的程序的cpp文件,文件来自某大学的大一c++课堂练习
recyclerview 封装基类适配器和基类holder 以及分割线使用
虚基类的演示:说明为什么使用虚基类,是用虚基类与不使用虚基类的区别,通过声音图像等多媒体说明使用虚基类的优点。
数据类型的基类
在各类中分别增加以下成员: base1中增加私有数据成员int b1 base2中增加私有数据成员int b2 level1中增加私有数据成员int l1 level2中增加私有数据成员int l2 toplevel中增加私有数据成员int t
基类,派生类
1.定义基类Shape,这有求面积的虚方法Mianji();求周长的虚方法Zhouchang()。 2.定义Shape类的派生类三角形Tangle,使用base关键字调用基类构造函数,重写Shape类继承的虚方法:求面积虚方法Mianji(),求周长虚...
AJAX的基类 可以直接使用这个基类处理AJAX的操作
虚基类的简单应用 这是平时的一个简单的代码 是自己写着玩的东西