jsp中使用cookie时报错……

简介: jsp中使用cookie时报错……


关键代码如下:

登录页面:login.jsp

<form action="doLogin.jsp" method="post">
     用户名:<input type="text" name="sname" /><br/>
     密码:<input type="text" name="spass"/><br/>
     <input type="submit" value="登录"/>
</form>

处理登录业务的doLogin.jsp

<%@page import="java.net.URLEncoder"%>
<%@page import="org.dao.impl.StudentDaoImpl"%>
<%@page import="org.dao.IStudentDao"%>
<%@page import="org.entity.Student"%>
<%@page import="org.service.impl.StudentServiceImpl"%>
<%@page import="org.service.IStudentService"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
  //创建Service的对象
  IStudentService studentService = new StudentServiceImpl();
  
  //解决乱码的问题
  request.setCharacterEncoding("utf-8");
  //获取表单的值
  String sname = request.getParameter("sname");
  String spass = request.getParameter("spass");
  //调用service的方法进行登陆
  Student stu = studentService.login(sname, spass);
  if(stu.getSid()!=0){
    //登陆成功
    //将用户名放入到Cookie里面
     Cookie scook = new Cookie("sname",sname);
    response.addCookie(scook); 
    
    //将登陆信息放在Session中
    //session.setAttribute("sname",sname);
    request.getRequestDispatcher("index.jsp")
          .forward(request,response);
  }
  
  
 %>

登录成功跳转到的页面:index.jsp

<body>
      <h1>欢迎进入学生管理系统</h1>
    <%
          Cookie cookie[] = request.getCookies();
          for(int i=0;i<cookie.length;i++){
            Cookie cook = cookie[i];
            if(cook.getName().equals("sname")){
              %> 
              你好:<%=cook.getValue()%>
              
              <%
            }
          }
       %> 
       
       <%-- <%
       String sname =(String)session.getAttribute("sname");
           if(sname==null){
             response.sendRedirect("login.jsp");
           }
        %>
        <%=sname %> --%>
  </body>

代码都写的没问题,就是报错:

ava.lang.IllegalArgumentException: Control character in cookie value or attribute.

后来用英文的昵称登录,正常显示:

看来就是中文编码的问题了,在网上查了查,确实是编码的问题,只需要在放置cookie的时候,设置编码格式为UTF-8,并且在显示时,设置编码格式也为UTF-8,问题完美解决,修改过后的代码如下:

登录业务处理:doLogin.jsp

Cookie scook = new Cookie("sname",URLEncoder.encode(sname,"UTF-8"));

登录成功:index.jsp

<%
          Cookie cookie[] = request.getCookies();
          for(int i=0;i<cookie.length;i++){
            Cookie cook = cookie[i];
            if(cook.getName().equals("sname")){
              %> 
              你好:<%=URLDecoder.decode(cook.getValue(),"UTF-8")%>
              
              <%
            }
          }
       %>

切记切记,在讲中文字符往Cookie中放的时候,一定要设置编码格式。


相关文章
|
2月前
|
Java 数据安全/隐私保护
jsp使用cookie实现记住用户名和密码
jsp使用cookie实现记住用户名和密码
|
1月前
|
存储 Java
JSP 教程 之 JSP Cookie 处理 8
JSP教程讲解如何处理Cookie。要删除Cookie,需获取已存在Cookie,将其有效期设为0,然后重新添加到响应头。以下示例代码演示如何删除一个名为&quot;name&quot;的Cookie。当运行此JSP,第二次访问时,&quot;name&quot; Cookie将变为null。页面还会显示现有Cookie的名称和解码后的值。
10 2
|
1月前
|
存储 Java
JSP 教程 之 JSP Cookie 处理 7
JSP教程讲解了如何处理Cookie。Cookie是客户端的文本文件,用于存储跟踪信息。在JSP中,通过调用`request.getCookies()`获取Cookie数组,然后遍历并使用`getName()`和`getValue()`读取每个Cookie的名称和值。示例代码展示了一个JSP页面,它遍历请求中的Cookie,并解码显示其名称和值。如果未找到Cookie,则显示相应消息。
15 1
|
1月前
|
存储 Java
JSP 教程 之 JSP Cookie 处理 6
JSP教程讲解了如何处理Cookie。Cookie是客户端的文本文件,用于存储跟踪信息。在JSP中,设置Cookie涉及三步:创建Cookie对象、设置有效期和添加到HTTP响应头。示例代码展示了一个JSP页面,接收HTML表单数据,编码后存储为Cookie,并设置24小时有效期。用户可以通过GET方法提交表单到main.jsp,实现Cookie设置。
17 2
|
1月前
|
存储 JavaScript 前端开发
JSP 教程 之 JSP Cookie 处理 2
JSP教程讲解了如何处理Cookie,Cookie是存储在客户端的文本文件,用于存储跟踪信息。在JSP中,通过设置HTTP头部的Set-Cookie来创建Cookie,包含键值对、过期时间、路径和域名。当用户访问匹配的页面时,浏览器会发送Cookie回服务器。JSP使用request对象的getCookies()方法获取Cookie数组。
8 1
|
1月前
|
存储 Java
JSP 教程 之 JSP Cookie 处理 4
JSP教程讲解了如何处理Cookie,Cookie是客户端存储的文本信息,用于跟踪用户行为。设置Cookie涉及三步:1) 创建Cookie对象,如`new Cookie(&quot;key&quot;,&quot;value&quot;)`,注意名称和值不能含特殊字符;2) 设定有效期,如`setMaxAge(60*60*24)`表示24小时有效;3) 使用`response.addCookie(cookie)`将其发送到HTTP响应头。
9 0
|
1月前
|
存储 安全 Java
JSP 教程 之 JSP Cookie 处理 3
JSP教程介绍了Cookie处理,Cookie是客户端存储的文本文件,用于跟踪信息。JSP支持HTTP cookie操作,提供了如设置域名、有效期、路径及加密传输等方法。例如,`setDomain()`设定域名,`setMaxAge()`设置有效期,`setPath()`定义作用路径,而`setSecure()`则用于指定安全传输。此外,`setComment()`可设置cookie用途注释。
17 0
|
1月前
|
存储 Java
JSP 教程 之 JSP Cookie 处理 1
JSP教程讲解了如何处理Cookie,Cookie是客户端存储的文本信息,用于跟踪用户。JSP支持HTTP cookie,处理包括:服务器发送cookie到浏览器、浏览器存储并在后续请求时回传。教程涵盖设置、重置、访问和删除Cookie的技巧。同时,提到了针对中文编码解码的方法,使用`URLEncoder.encode`进行编码,`URLDecoder.decode`进行解码。
10 0
|
9月前
|
存储 设计模式 JavaScript
掌握JavaWeb开发的必备技能:Servlet、JSP、Cookie、Session、EL、JSTL详解 ~~~~B站老杜--Servlet-JSP-课堂笔记(三)
当某个特殊的事件发生(特殊的事件发生其实就是某个时机到了。)之后,被web服务器自动调用。 思考一个业务场景
55 0
|
9月前
|
缓存 前端开发 Java
掌握JavaWeb开发的必备技能:Servlet、JSP、Cookie、Session、EL、JSTL详解 ~~~~B站老杜--Servlet-JSP-课堂笔记(二)
我们只需要service方法,其他方法大部分情况下是不需要使用的。代码很丑陋。 适配器设计模式Adapter
49 0