表单信息的获取

1.JSP九大内置对象(自带的,不需要new也能使用的对象)

  • pageContext:JSP页面容器
  • response:响应对象
  • session:会话对象
  • application:全局对象
  • out:输出对象,向客户端输出内容。
  • request:请求对象,存储客户端向服务端发送的请求信息。
  • config:配置对象
  • page:当前JSP页面对象(相当于java中的this)
  • exception:异常对象

request对象的常见方法:

  • String getParameter(String name) 根据请求的字段名key,返回字段值value。
  • String[] getParameterValues(String name) 根据请求的字段名key,返回多个字段值value。
  • void setCharacterEncoding(“utf-8”) 设置请求编码(tomcat7以前默认iso-8859-1,tomcat8以后默认utf-8)
  • getRequestDispatcher(“b.jsp”).forward(request,response) 请求转发的方式跳转页面 A–> B
  • ServletContext getServletContext() 获取项目的ServletContext对象

表单信息的获取_第1张图片

2.表单信息的获取

通过request对象的getParameter()方法可以获取用户提交的表单信息。
例如存在一个name属性为username的文本框,在表单提价后,要获取其value值,可通过以下代码实现:
前端的写法:

<p align="center">用户名:<input type="text" name="username"/></p>
String userName=request.getParameter(“username”);

表单信息的获取_第2张图片
在这里插入图片描述
创建用户注册的表单页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="check.jsp" method="post">
        <p align="center">用户名:<input type="text" name="username"/></p>
        <p align="center">&nbsp;&nbsp;&nbsp;码:<input type="password" name="pwd"/></p>
        <p align="center"><input type="submit" value="登录"/></p>
    </form>
</body>
</html>

创建show.jsp页面,在该页面中获取用户提交的表单信息并显示在页面中

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String pwd = request.getParameter("pwd");
    %>
    <%
        if(username.equals("123456") && pwd.equals("123456"))
        {
            out.print("登录成功");
        }else {
            out.print("失败");
        }
    %>
</body>
</html>

3.请求转发和重定向

请求转发 重定向
地址栏是否改变 不变(check.jsp) 改变(success.jsp)
是否保留第一次请求时的数据 保留 不保留
请求的次数 1 2
跳转发生的位置 服务端 客户端发出的第二次跳转

表单信息的获取_第3张图片

4.Session(服务端)和Cookie(客户端,不是内置对象)

Cookie是由服务端生成的,再发送给客户端保存。
相当于本地缓存的作用:客户端(hello.mp4) —> 服务端(hello.mp4)。
作用:提高访问服务端的效率,但是安全性较差。
Cookie:key=value
javax.servlet.http.Cookie

  • public Cookie(String name,String value)
  • String getName() 获取name
  • String getValue() 获取value
  • void setMaxAge(int expiry) 最大有效期(秒)

服务端准备Cookie

response.addCookie(Cookie cookie);

页面跳转(转发、重定向)
客户端获取Cookie:

request.getCookies();
  1. 服务端增加cookie:response对象,客户端获取cookie:request对象。
  2. 不能直接获取某一个单独对象,只能一次性将全部的cookie拿到。

通过F12可以发现,除了自己设置的Cookie对象外,还有一个name为JSESSIONID的cookie。

服务端增加cookie

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        //服务端
        Cookie cookie1 = new Cookie("name","zs");
        Cookie cookie2 = new Cookie("pwd","abc");

        response.addCookie(cookie1);
        response.addCookie(cookie2);

        //页面跳转到客户端(转发,重定向)
        response.sendRedirect("result.jsp");
    %>
</body>
</html>

客户端获取cookie

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        Cookie[] cookies = request.getCookies();
        for(Cookie cookie:cookies){
            out.print(cookie.getName() + " " + cookie.getValue() + "
"
); } %> </body> </html>

使用Cookie实现记住用户名功能

表单信息的获取_第4张图片
Session(会话)

  1. 浏览网站:开始-关闭
  2. 购物:浏览-付款-退出
  3. 电子邮件:浏览邮件-写邮件-退出

开始-结束

Session机制

客户端第一次请求服务端时,(会进行一次匹配)服务端会产生一个Seesion对象(用于保存该客户的信息),并且每个Session对象都会有一个唯一的的SessionID(用于区分其他Session)
服务端会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端SessionID的值,然后服务端会在响应客户端的同时,将该cookie发送给客户端,至此,客户端就有了一个cookie(JSESSIONID)

因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID-SessionID)

客户端第2/n次请求服务端时:服务端会先用客户端cookie中的JSESSIONID去服务端的session中匹配SessionID。

如果匹配成功(cookie - JSESSIONID和Session - SessionID),说明用户不是第一次访问,无需登录。
表单信息的获取_第5张图片

  1. Session存储在服务端
  2. Session是在同一个用户(客户)请求时共享
  3. 实现机制:第一次客户请求时,产生一个SessionID并复制给Cookie的JSESSIONID然后发给客户端

Session方法

  1. String getId():获取SessionID
  2. boolean isNew():判断是否是新用户(第一次访问)
  3. void invalidate():使Session失效(退出登录,注销)
  4. void getAttribute()
  5. Object setAttribute()
  6. void setMaxInactiveInterval()(秒):设置最大有效 非活动时间
  7. int getMaxInactiveInterval() 获取最大有效非活动时间

登录之后分配一个SessionID
表单信息的获取_第6张图片

注意:request作用域
表单信息的获取_第7张图片

Cookie和Session的区别

session cookie
保存的位置 服务端 客户端
安全性 较安全 较不安全
保存的内容 Object String

5.application全局对象

  1. String getContextPath() 虚拟路径
  2. String getRealPath() 绝对路径(虚拟路径相对的绝对路径)

6.四种范围对象(小->大)

  1. pageContext JSP页面容器            当前页面有效(页面跳转后无效)
  2. request 请求对象                           同一次请求有效(请求转发后有效,重定向后无效)
  3. session 会话对象                           同一次会话有效(无论怎么跳转都有效,关闭/切换浏览器后无效,从登录->退出全部有)
  4. application 全局对象                      全局有效(整个项目运行期间都有效,切换浏览器,仍然有效,关闭服务/其他项目无效)

以上对象共有的方法

  1. Obeject getAttribute(String name):根据属性名获取属性值
  2. void setAttribute(String name,Obeject obj):设置属性值(新增,修改)
  3. void removeAttribute():根据属性名,删除对象

你可能感兴趣的:(后端)