zoukankan      html  css  js  c++  java
  • 常用的JSP内置对象(1)

    常用的JSP内置对象
    request对象主要用于处理客户端请求
    request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。
    request对象常用方法
     
    方法名称 说明
    String getParameter(String name) 根据表单组件名称获取提交数据
    String[ ] getParameterValues(String name) 获取表单组件对应多个值时的请求数据
    void setCharacterEncoding(String charset) 指定每个请求的编码
    RequestDispatcher getRequestDispatcher(String path) 返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求
    方法名称 说明
    void addCookie(Cookie cookie) 向客户端添加Cookie
    void setCookie(String type) 设置Http相应的 contentType类型
    void setCharacterEncoding(String charset) 设置相应采用的字符编码类型
    void sendRedirect 将请求重新定位带一个新的url上
     
    转发
    转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递
    客户端浏览器的地址栏不会显示转向后的地址
    重定向
    重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向
    在地址栏中可以显示转向后的地址
     
    HTTP中的重定向和请求转发的区别
    一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:
    转发过程:客户浏览器发送http请求----》web服务器接受此请求--》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
    重定向过程:客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的location给客户浏览器--》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址----》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
    Session:对象常用方法:
     
    方法名称 说明
    String getId() 获取sessionid
    void setMaxInactiveInterval(int interval) 设定session的非活动时间
    int getMaxInactiveInterval() 获取session的有效非活动时间(以秒为单位)
    void invalidate() 设置session对象失效
    void setAttribute(String key, Object value) 以key/value的形式保存对象值
    Object getAttribute(String key) 通过key获取对象值
    void removeAttribute(String key) 从session中删除指定名称(key)所对应的对象
     
     
     
    Session与窗口的关系
    • 每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建 一个session对象(不同版本浏览器可能有所差别)
    • 通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
     
     
    COOKIE和SESSION有什么区别?
    cookie保存在客户端,session保存在服务器端,
    cookie目的可以跟踪会话,也可以保存用户喜好或者保存用户名密码
    session用来跟踪会话
    jsp和servlet都是单例多线程的。
     
     
    简单的登陆案例
    主页面:
     
    <div id="container">
    <h2>请输入注册信息</h2>
    <form action="control.jsp" method="post">
    用户名:<input name="uname"/><br/>
    密码:<input name="upwd" type="password"/><br/>
    <br/><input type="submit" value="Login"/>
    </form>
    </div>
     
     
    判断登陆证明页面:
     
    String path = request.getContextPath();
    Object obj = session.getAttribute("uname");
    if (obj == null) { //证明没有登录
    if ((String) obj == null) {
    //证明没有登录
    response.sendRedirect(path + "/computer2/login.jsp");
    }
    }
     
    登陆页面:
     
    String path = request.getContextPath();
    //1.request
    String name = request.getParameter("uname");
    String pwd = request.getParameter("upwd");
    if (name.equals("admin") && pwd.equals("admin")) {
     
    //认证成功
    //记录当前登录用户,将用户信息保存到session
    session.setAttribute("uname", name);
    //跳转到主页
    request.getRequestDispatcher("index.jsp").forward(request,response);
    } else {
    response.sendRedirect(path + "/computer2/login.jsp");
    }
     
    登陆成功页面和注销页面:
     
    <a href="logout.jsp">注销</a><br/>
    <%=session.getAttribute("uname")+"你好" %>
     
    消除session的服务器的记录:
     
    String path = request.getContextPath();
    session.removeAttribute("uname");
    response.sendRedirect(path+"/computer2/login.jsp");
     
     
     
  • 相关阅读:
    浅谈 PHP 与手机 APP 开发(API 接口开发)
    Thinkphp+Nginx(PHPstudy)下报的404错误,403错误解决
    win7彻底卸载iis
    Java ByteCode 规格严格
    CPUID 规格严格
    Your First Plugin(转载) 规格严格
    SQLYog Enterprise注册码 规格严格
    WSUS API&&WUAPI 规格严格
    linux学习一则 规格严格
    Eclipse分析源代码时总是显示org.eclipse.core.runtime.CoreException错误,找不到***文件(转载) 规格严格
  • 原文地址:https://www.cnblogs.com/liehuonanjue/p/8954019.html
Copyright © 2011-2022 走看看