Servlet中Request,Response,Ajax,转发,重定向等的关系

Servlet中Request,Response,Ajax,转发,重定向等的关系

 

一.Request设置参数,通过转发或者重定向,跳转到页面:

if ("specialDoc".equals(action)) {
	String userName = null;
	User user = (User) request.getSession().getAttribute("user");
	if (user != null) {
		userName = user.getUsername();
	}
	long id = Long.valueOf(request.getParameter("id"));
	ProjectDao projectDao = new ProjectDao();
	List list = projectDao.getItemById(id);
	if (list != null && list.size() > 0) {
		Object[] obj = (Object[]) list.get(0);
		request.setAttribute("itemName", obj[1]);
		request.setAttribute("remark", obj[2]);
		request.setAttribute("createDate", obj[3]);
		request.setAttribute("list", list);
	}
	if (userName == null) {
		request.setAttribute("userName", "nobody");
	}
	else {
		request.setAttribute("userName", userName);
	}
	request.getRequestDispatcher("/frontShow/special-info.jsp").forward(request, response);
	return;
}

1.request设置参数:

2.获取转发器,转发地址跳回原页面或跳到新页面:

 

二.Response用于Ajax返回数据(一般返回Json字符串):

if ("pageAjax".equals(action)) {
	String userName = null;
	User user = (User) request.getSession().getAttribute("user");
	if (user != null) {
		userName = user.getUsername();
	}
	String tableName = request.getParameter("table");
	int start = Integer.valueOf(request.getParameter("page"));
	String pageSizesString = request.getParameter("pageSize");
	int pageSize = 0;
	if (pageSizesString != null) {
		pageSize = Integer.valueOf(request.getParameter("pageSize"));
	}
	pageDao = new PageDaoImpl();
	pageDao.init(start, pageSize, tableName, level);//Page对象初始化
	Page page = pageDao.getPage();//获取Page对象
	JSONObject jObj = new JSONObject();
	jObj.put("userName", userName);
	jObj.put("currentPage", page.getCurrentPage());
	jObj.put("totalPages", page.getTotalPage());
	jObj.put("hasPrevious", page.isHasPreviousPage());
	jObj.put("hasNext", page.isHasNextPage());
	jObj.put("isFirst", page.isFirstPage());
	jObj.put("isLast", page.isLastPage());
	jObj.put("list", page.getList());
	response.setContentType("text/json;charset=UTF-8");
	PrintWriter out = response.getWriter();
	out.print(jObj);
	out.close();
	return;
}

1.创建Json字符串:

2.通过PrintWriter输出,即返回给Ajax:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
package com.ischoolbar.programmer.interceptor.home; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; /** * 前台登录拦截器 * @author llq * */ public class LoginInterceptor implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { // TODO Auto-generated method stub String requestURI = request.getRequestURI(); Object admin = request.getSession().getAttribute("account"); if(admin == null){ //表示未登录或者登录失效 System.out.println("链接"+requestURI+"进入拦截器!"); String header = request.getHeader("X-Requested-With"); //判断是否是ajax请求 if("XMLHttpRequest".equals(header)){ //表示是ajax请求 Map<String, String> ret = new HashMap<String, String>(); ret.put("type", "error"); ret.put("msg", "登录会话超时或还未登录,请新登录!"); response.getWriter().write(JSONObject.fromObject(ret).toString()); return false; } //表示是普通链接跳转,直接定向到登录页面 response.sendRedirect(request.getServletContext().getContextPath() + "/home/login"); return false; } return true; } }response.sendRedirect(request.getServletContext().getContextPath() + "/home/login");getServletContext爆红
最新发布
07-13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值