博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次Servlet中getAttribute的错误.
阅读量:6843 次
发布时间:2019-06-26

本文共 3197 字,大约阅读时间需要 10 分钟。

package com.ykmimi.order.servlet;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.ykmimi.order.entity.Customers;import com.ykmimi.order.service.AuthService;/** * Servlet implementation class ShowUserServlet */@WebServlet("/ShowUserServlet")public class ShowUserServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse     * response)     */    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        / * 字符编码设置        request.setCharacterEncoding("utf-8");        response.setCharacterEncoding("utf-8");        response.setContentType("text/html;charset=utf-8");        /* requestURL        StringBuffer requestURL = request.getRequestURL();        System.out.println(requestURL);        String clientIP = request.getRemoteHost();        System.out.println(clientIP);        /* 获取cookie        Cookie[] cs = request.getCookies();        if(cs.length>0){            for(Cookie c : cs){                //获取Cookie的name,key                String name = c.getName();                request.setAttribute("name",name);   //在这里,如果设置(name,name) 则会在下面cid获取attribute时出现String转long的异常.所以要明确key值必须是""String类型                String value = c.getValue();                request.setAttribute("value",value);            }        }        / * 获取/login传送过来的long类型值 cid (customer_id)        long cid = 0;        cid  = (long)request.getAttribute("cid");        System.out.println(cid);//        cid =Long.parseLong(cidStr);        /* 获取用户id后进行判定,如果不为0的话,将其再进行查询,返回用户的整个实例,再次进行传值        /* 并在最终用户登陆后的显示界面上显示用户信息及登陆后的服务信息.        if (cid > 0) {            AuthService as = new AuthService();            /* 如果这个id比较符合id的规则 即 大于 0, 那么用它去数据库检索这个id的归属者的实例            Customers customer = null;            customer = as.getCustomersInstanceByID(cid);            request.setAttribute("customerInstance", customer);            RequestDispatcher rd = request.getRequestDispatcher("/userInfo.jsp");            rd.forward(request, response);//            response.sendRedirect("/userInfo.jsp?cid="+cid+"&cname="+customer.getCustomer_name());        } else if (cid == 0) {            RequestDispatcher rd = request.getRequestDispatcher("/error.jsp");            rd.forward(request, response);        }    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse     * response)     */    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // TODO Auto-generated method stub        doGet(request, response);    }}

而且在前一个页面,也就是写入Cookie的Servlet转发过来后,cid是在写如Cookie前的那一个Servlet转发过来的,而写Cookie的那个Servlet不用再重复设置setAttribute("cid",cid)

但如果你在中间转发的那个Servlet又设置"cid"为别的值,那么最后接受时也会改为别的值.

将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。

转载地址:http://brdul.baihongyu.com/

你可能感兴趣的文章
Java 内存分配全面浅析
查看>>
Linux 文件与权限管理
查看>>
2016-12-7 第一次 测试
查看>>
ansible 安装与基本功能的使用
查看>>
AIX引导级别及级别修改
查看>>
获得第一批用户
查看>>
2月第一周网络安全报告:放马站点域名315个
查看>>
大数据,TB、PB、EB,你了解多少?
查看>>
CSS3中的弹性流体盒模型技术详解(一)
查看>>
linux禁用休眠
查看>>
RH413-RHEL6.4课程总结
查看>>
MaxCompute(ODPS)上处理非结构化数据的Best Practice
查看>>
想了解产品经理吗?---经典文章
查看>>
阿里云宣布 Serverless 容器服务 弹性容器实例 ECI 正式商业化
查看>>
monowall
查看>>
Kubernetes 如何打赢容器之战?
查看>>
转-MySQL服务添加到Windows系统服务中
查看>>
自己实现一个RDD,需要实现哪些函数或者部分?
查看>>
equals()的重写规则
查看>>
Android中使用抖动动画吸引来用户注意
查看>>