day_47_Servlet

1.servlet返回参数乱码问题

//治标不治本
String name = req.getParameter("name");
String utf8Name = new String(name.getBytes("iso-8859-1"),"utf-8");

post中文乱码问题

req.setCharacterEncoding("UTF-8");
//将此句写在post方法最前面,此句话前面不要有别的赋值语句
//用于解决数据库返回参数的中文乱码问题
resp.setContentType("text/html ; charset=utf-8");
//将此句写在post方法最前面,解决输出到前端页面时的中文乱码问题

2.servlet跳转

  • 如果要做查询操作,用:

  • 因为forward后的地址栏不发生改变, 刷新后会增加请求次数(本来买一件东西,刷新后变成两件)

    req.getRequestDispatcher("/login.jsp").forward(req,resp);
    
  • 如果需要操作的功能(添加,删除,修改),用:

  • 因为重定向后的地址栏发生改变, 刷新后不会增加请求次数.

    resp.sendRedirect(req.getContextPath()+"/cookieServlet?action=getUsername");
    

    注意:

    • 如果用sendRedirect跳转,那么request域中的数据(setAttribute(,))不会传递过去

      需要用session域保存数据

    • 如果用getRequestDispatcher跳转,会传递由(setAttribute(,))保存在request域中的数据

2.5 跳转路径写法

  1. request.getRequestDispatcher("/test.html").forward(request, response);
    加 “/” 代表http://localhost:8080/工程名/web
    不加 “/” 代表http://localhost:8080/工程名/web + servlet路径的前一个
  2. resp.sendRedirect("/Servlet_02/test.html");
    加 “/” 代表http://localhost:8080
    不加 “/” 代表http://localhost:8080/工程名/web + servlet路径的前一个

3.getAttribute与getParameter

  • getAttribute目前只用于获取session对象

    servlet向前端传输参数功能已经被EL表达式取代 ${}

Cart cart = (Cart) req.getSession().getAttribute("cart");
  • getParameter用于获取网址链接中的参数

    location.href = "${basePath}cartServlet?action=addItem&id="+ bookId+"&pageNo="+${requestScope.page.pageNo};
    

4.req.getHeader(“Referer”)原路径返回

  • 获取跳过来的页面的请求头的referer部分的值

  • (用于加入购物车后,停留在当前页,需要保留pageNo的参数)

  • 本质:跳回原来向servlet发请求的界面(原路径返回)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值