cookie和servlet

来源:互联网 发布:php扩展加密 编辑:程序博客网 时间:2024/06/06 12:46
关于ajax:
前台使用:
$.ajax({
url:"warehouse/tilesort!getTileSortListAjax.action",
type:"post",
async:false,
data:(采用key:value形式赋值)
success:function(data){
var jsonObject = eval("("+data+")");
for(var i=0;i<jsonObject.length;i++){
//动态赋值,select
var tr=$("<option value="+jsonObject[i][0]+">"+jsonObject[i][1]+"</option>");
$("#tileSortSelect").append(tr);
}

}
后台数据封装:
//采用JSONwang格式封装数据
JSONWang jSONWang = new JSONWang();
String jsonString  = jSONWang.fromList(tileNameList);
HttpServletResponse response =   ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
try {
response.getWriter().print(jsonString);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
关于分页:
分页PageUtil
package com.aaatile.web.util;


import java.util.Enumeration;


import javax.servlet.http.HttpServletRequest;


import org.omg.CORBA.PUBLIC_MEMBER;


public class PageUtil {
//当前页码值
private int pageNo;
//每页显示的数量
private int pageSize;
//总页数
private int pageCount;
//总数据行数
private int totalCount;
//分页查询连接的地址
String url="";
public PageUtil() {
super();
// TODO Auto-generated constructor stub
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}

public PageUtil(int pageNo, int pageSize, int totalCount,
HttpServletRequest request) {
super();
this.pageNo = pageNo;
this.pageSize = pageSize;
this.totalCount = totalCount;
//动态获取url;
url=request.getRequestURI()+"?";
//获取所有请求的参数名的集合
Enumeration<String> enumeration = request.getParameterNames();
//不能通过下标获取元素,采用while循环遍历,拼接url字符串
while(enumeration.hasMoreElements()//判断下一个是否还有元素
){
String param=enumeration.nextElement();
if(!"pageNo".equals(param)){//除了pageNo之外的所有参数都要拼接
if(url.charAt(url.length()-1)=='?'){//如果URL最后为?,直接拼参
url+=param+"="+request.getParameter(param);
}else{//如果URL最后不是为?,先拼入&再拼接参数
url+="&"+param+"="+request.getParameter(param);
}
}
if(url.charAt(url.length()-1)!='?'){
url+="&";
}

}
}

/**
* 拼接分页的字符串
* @return
*/
public String getPageString(){
StringBuffer stringBuffer =new StringBuffer();
//计算总页数
pageCount=totalCount%pageSize==0?totalCount/pageSize:totalCount/pageSize+1;
//PageCount=Math.ceil(totalCount/((double)PageSize));
//当前页码值小于1或者大于总页数时,设置默认值保护
if(pageNo<1){
pageNo=1;
}
if(pageNo>pageCount){
pageNo=pageCount;
}
//如果不是第一页可以点上页和首页
if(pageNo>1){
stringBuffer.append("<a href='"+url+"pageNo=1'>首页</a>&nbsp;<a href='"+url+"pageNo="+(pageNo-1)+"'>上一页</a>&nbsp;");
}else{
//如果是第一页,就设置假点击上一页和首页
stringBuffer.append("首页&nbsp;上一页&nbsp;");
}
//如果不是最后一页可以点击下一页和尾页
if(pageNo<pageCount){
stringBuffer.append("<a href='"+url+"pageNo="+(pageNo+1)+"'>下一页</a>&nbsp;<a href='"+url+"pageNo="+pageCount+"'>尾页</a>");
}else{
//如果是最后一页不可点击下一页和尾页
stringBuffer.append("下一页&nbsp;尾页&nbsp;");
}
//添加跳转下拉页码框,遍历添加value
stringBuffer.append("转到第<select onchange=javascript:window.location.href='"+url+"pageNo='+this.value>" );
for(int i=1;i<=pageCount;i++){
if(pageNo==i){
stringBuffer.append("<option value="+i+" selected>"+i+"</option>");
}
else{
stringBuffer.append("<option value="+i+">"+i+"</option>");
}
}
stringBuffer.append("</select>页");
return "<div class='pageCss'>共"+totalCount+"条"+pageCount+"页&nbsp;"+stringBuffer+"</div>";
}


}
关于servlet使用PageUtil:
String pageNo = request.getParameter("pageNo");
String pageSize = request.getParameter("pageSize");
if(pageNo==null||"".equals(pageNo)){
pageNo="1";
}
if(pageSize==null||"".equals(pageSize)){
pageSize="4";
}

EmpService empService = new EmpServiceImpl();
//serviceImpl层中分页查询数据(这里进行了前台传过来每页要显示的pageSize)
List<Emp> empList = empService.getEmp(Integer.valueOf(pageNo),Integer.valueOf(pageSize));
int count = empService.countEmp();
System.out.println(count);
//使用pageUtil包封装底层数据,并传到前台页底
PageUtil pageUtil = new PageUtil(Integer.valueOf(pageNo),Integer.valueOf(pageSize),count,request);
String msg = pageUtil.getPageString();
request.setAttribute("msg", msg);
request.setAttribute("pageSize",pageSize);
request.setAttribute("empList", empList);
request.getRequestDispatcher("/jsp/emp.jsp").forward(request, response);
}
servlet的父类:BaseServlet:(其他servlet可以继承此servlet)
package com.aaatile.web.servlet;


import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;


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



public class BaseServlet extends HttpServlet {
/**
* 当其他servlet继承此方法时,可以在servlet中写单个类的所有方法
*/
@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// 1.获取子类  创建子类或者调用子类的时候 this代表的是子类对象
//@SuppressWarnings("rawtypes")
Class clazz = this.getClass();


// 2.获取请求的方法
String m = request.getParameter("method");
if(m==null){
m="index";
}


// 3.获取方法对象
Method method = clazz.getMethod(m, HttpServletRequest.class, HttpServletResponse.class);

// 4.让方法执行 返回值为请求转发的路径
String s=(String) method.invoke(this, request,response);//相当于 userservlet.add(request,response)

// 5.判断s是否为空
if(s!=null){
request.getRequestDispatcher(s).forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();



}

public String index(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
return null;
}

}
使用cookie(添加cookie)
if("ok".equals(saveName)){
Cookie  c= new Cookie("customerNo", customerNo);//cookie的值设定
//设置cookie路径
c.setPath(request.getContextPath()+"/");
//设置cookie时长
c.setMaxAge(3600);
//写回浏览器
response.addCookie(c);
}
删除cookie:
for(Cookie cookie : cookies){  
                if(cookie.getName().equals("customer")){  
                    cookie.setValue(null);  
                    cookie.setMaxAge(0);// 立即销毁cookie  
                    cookie.setPath("/");//保持路径和设置时的路径一致
                    response.addCookie(cookie);
                    break;  
                }  
        }