精华内容
下载资源
问答
  • JSP内置对象 JSP内置对象 JSP内置对象
  • JSP内置对象

    千次阅读 2019-06-11 18:09:19
    JSP内置对象的分类 内置对象属性保存范围 JSP内置对象的常用方法(只列了一些) 小例子 一:JSP内置对象的分类 这些对象不用经过显示声明直接引用,也不用代码创建其实例,可程序直接使用,由Web ...
    • JSP内置对象的分类
    • 内置对象属性保存范围
    • JSP内置对象的常用方法(只列了一些)
    • 小例子

     

     

    一:JSP内置对象的分类

    这些对象不用经过显示声明直接引用,也不用代码创建其实例,可在程序中直接使用,由Web Container为对象实例化。

     

     

     

     

     

    二:内置对象属性保存范围

    (1)page:在JSP中设置一个页的属性范围,必须通过pageContext完成,属性值只能在当前页取得。

    (2)request:将属性保存在一次请求范围之内,必须使用服务器跳转<jsp:forward/>,通过客户端跳转和超链接等无法取得。

    (3)session:只保留一个用户的信息,不管什么跳转都可以取得属性,与session有关的任何打开的页面都可以取得session。

    (4)application:所有用户都可以取得此信息,此信息在整个服务器上被保留,所有网页窗口都可以取得数据。

     

    注意:这四种属性范围,都是通过pageContext对象来完成的。

    设置属性:
    public abstract void setAttribute(String name,Object value,int scope)
    取得属性:
    public abstract Object getAttribute(String name)

    其中,scope取值为:

    public static final int APPLICATION_SCOPE
    public static final int SESSION_SCOPE
    public static final int REQUEST_SCOPE
    public static final int PAGE_SCOPE
    

    例子:

     <%
        pageContext.setAttribute("name","内置对象");
        String d= (String) pageContext.getAttribute("name");
        out.print(d);
      %>

     

     

    三:JSP内置对象的常用方法(只列了一些)

    (1)request请求对象

    request对象属于 Javax. ervlet ServletRequest接口的实例化对象。
    【作用】 request对象不但可以用来设置和取得 request范围变量,还可以用来获得客户端请求参数、请求的来源、表头、 cookies等。
    【机制】当用户请求一个JSP页面时,JSP页面所在的 Tomcat服务器将用户的请求封装在内置对象 request中。 request内置对象代表了客户端的请求信息,主要用于接收客户端通过HTTP协议传送给服务器端的数据。在客户端的请求中如果有参数,则该对象就有参数列表。

     

     

    (2)response响应对象

    response对象属于Javax.servlethttpHttpservletrEsponse接口的实例化对象
    【作用】 response对象用来给客户端传送输出信息、设置标头等。
    【机制】 response对象的生命周期由JSP容器自动控制。当服务器向客户端传送数据JSP容器就会创建 response对象,并将请求信息包装到 response对象中。它封装了JSP性的响应,然后被发送到客户端以响应客户的请求,当JSP容器处理完请求后, response
    对象就会被销毁。

     

    1)页面跳转的多种方式:

      每隔1s刷新一次页面
      <%
        response.setHeader("refresh","1");
      %>
      2秒后跳转到login.jsp
      <%
        response.setHeader("refresh","2;URL=login.jsp");
      %>

     

    2)response.sendRedirect("地址")实现页面跳转(可以携带参数)

    <%
        response.sendRedirect("AA.jsp?id=1");
    %>
    
    跳转后地址为:http://localhost:8080/AA.jsp?id=1
    

    这种是客户端跳转,页面跳转时,地址栏改变,不能保存request属性,要通过URL地址重写传递参数。

    和<jsp:forward page=""/>相比,后者是服务器跳转,地址栏不改变,无条件跳转,之后的代码不执行,所以在跳转之前释放全部资源 request设置的属性能保留在下一个页面,通过<jsp:param>传递参数

     

    3)设置Cookie

    Cookie是服务器端保存客户端的一组资源。例如,登录时会问用户是否记住密码,或多长时间不用登录,这些功能都是通过 Cookie来实现的。

    Cookie是通过服务器端设置到客户端上去的,用response提供的方法实现:
    public void addCookie(Cookie cookie)
    如果要在服务器端取得 Cookie,用 request提供的方法实现:
    public Cookie[] getCookies()
    在使用 request对象取得全部 Cookie时,会出现 Jsessionid信息。 Jsessionid表示一个客户端在服务器端的唯一一个标识编号(自动获得 Session对象),服务器端在客户端第一次访问之后,会设置一个默认的 Cookie在客户端上: Jsessionid
    默认情况下, Cookie只针对当前浏览器有效,如果需要 Cookie长留在本地计算机上,可以设置 Cookie的保存时间。通过 Cookie对象的 setMaxAge0设置最大保留时间。

    Cookie是保存在客户端上的信息,安全性较差,不要把过多的隐秘信息保留在 Cookie中,这样很不安全。
     

     

    (3)session会话对象

    session对象属于Javax.servlet.http.Htpsessio接口的实例化对象。
    【作用】 session对象用来表示用户的会话状况,一般用于保存用户的各种信息,直到生命周期(一般为900s)超时或者被人为释放掉为止。
    【机制】当一个用户首次访问服务器上的一个JSP页面时,JSP引擎产生一个 session对象,同时分配一个 String类型的ID号,JP引擎同时将这个ID号发送到用户端,存放在Cookie中,这样session对象和用户之间就建立了一一对应的关系。当用户再访问连接该服务器的其他页面时,不再分配给用户新的 Session对象。直到关闭浏览器后,服务器端该用户的 Session对象才取消,与用户的对应关系也一并消失。当重新打开浏览器再连接到该服务器时,服务器会为该用户再创建一个新的 Session对象。 

     

    1) session与 Cookie比较
    session和 Cookie用于跨网页共享数据。
    1> session:将信息以对象形式保存于服务端,记录独有的个人信息,在不同页面中传递。 session对象随会话结束而结束
    2> Cookie:将信息以字符串形式保存于客户端,供浏览器与web服务器互通数据用的文本文件,当IE执行时,会在计算机中产生一个 Cookie。 Cookie可以长期保存在客户端。
    session比 Cookie更安全,但更占用资源。重要的信息使用 session保存,不重要的用信息通常用 Cookie保存
    【开发原则】尽量少向 session中保存信息, session使用了 Cookie的机制,如果 Cookie禁用,则 session也无法使用。

     

     

    (4)application应用程序对象

    application对象属于Javax.servlet.jsp.ServletContext接口的实例化对象。
    【作用】application对象用户取得和设置Servlet的相关信息,实现了用户间数据的共享,可存放全局变量
    【机制】开了于服务器的启动,知道服务器关闭,这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作。

     

     

    (5)其他对象

    1>pageContext页面上下文对象

        <%
        request.setAttribute("name","漫步云端");
        %>
        <%=pageContext.getRequest().getAttribute("name")%>

     

     

     

     

     

    四:小例子

    login.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>login</title>
        <%--正则表达式将字符串前后空格用空字符串替代--%>
        <%--/.../g:全文匹配;\s*:0个或多个空格;^:字符串必须以后面的规则开头;|:或--%>
        <%--(^\s*):0个或多个空格开头;$:字符串必须以前面的规则结尾;(\s*$):0个或多个空格结尾--%>
        <script type="text/javascript">
            function loginCheck() {
                var userName =  window.loginform.userName.value;
                var userPassword = window.loginform.userPassword.value;
    //            window.alert("s1");
    //            window.alert("s2")
    //            alert("s3");
    //            alert("s4")
                if(userName.replace(/(^\s*)|(\s*$)/g,"")==""){
                    window.alert("用户ID不能为空");
                    window.loginform.userName.focus();
                    return false;
                }
                if(userPassword.replace(/(^\s*)|(\s*$)/g,"")==""){
                    window.alert("用户密码不能为空");
                    window.loginform.userPassword.focus();
                    return false;
                }
                return true;
            }
        </script>
    </head>
    <body>
    
    <form name="loginform" action="loginSubmit.jsp" method="get">
        账号:<input type="text" name="userName" id="userName"/>
        密码:<input type="password" name="userPassword" id="userPassword"/>
        <%--当用户鼠标经过按钮执行Javascript代码--%>
        <input type="submit" value="提交" onmouseover="loginCheck()"/>
    </form>
    
    <%
        if (request.getParameter("err")!=null){
    //getParameter获得客户端传送给服务器端传送的参数值;获取表单提交的信息,以字符串形式返回客户端传来的某一个请求参数的值
            String err = request.getParameter("err");
            if (err.equals("-1")){
                out.print("账号或密码错误");
            }
            else {
                out.print("其他问题");
            }
        }
    %>
    </body>
    </html>
    
    
    

    在这个页面我遇到几个问题

    第一个就是window我把它写为大写的W就没效果了

    第二个就是正则表达式replace(/(^\s*)|(\s*$)/g,""),作用是将字符串前后空格用空字符串替代,当我输入是空或者空格都会提示

    第三个就是在form写原生的botton控件,会默认是submit类型,会提交

     

     

    loginSubmit.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>login处理</title>
    </head>
    <body>
        <%
            String userName = request.getParameter("userName");
            String userPassword = request.getParameter("userPassword");
            if (userName.equals("123456")&&userPassword.equals("123456")){
    //          将类型为o(Object o,右边的)存入session对象的name(String name,左边的)属性中
                session.setAttribute("userName",userName);
                session.setAttribute("userPassword",userPassword);
    //            页面重定向跳转,跳转后地址改变,属于客户端跳转
                response.sendRedirect("index.jsp");
            }
            else {
    //            因为是重定向跳转,不能保存request属性,所以重写传递参数err=-1
                response.sendRedirect("login.jsp?err=-1");
            }
        %>
    </body>
    </html>
    

     

     

    index.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>主页</title>
      </head>
      <body>
        <%
          if (session.getAttribute("userName")!=null){
        %>
        当前用户:<%=session.getAttribute("userName")%>
        <%
          }else{
        %>
        当前用户:游客
        <%
          }
        %>
      </body>
    </html>
    

    如果有值就是哪个值,没有就是游客,不过前面因为写了判断,所以账号密码错误也不会跳到游客,可以直接进这个页面

     

    在这个例子中:

    getParameter 是用来接受用post个get方法传递过来的参数的

    参考https://terryjs.iteye.com/blog/1317610

    展开全文
  • jsp内置对象

    2013-06-19 16:34:41
    jsp内置对象
  • Jsp内置对象参考手册.chm+JSP内置对象详细讲解
  • JSP内置对象pdf

    2013-07-19 15:39:58
    JSP9个内置对象的应用,希望对初学JSP内置对象的人有用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,592
精华内容 25,836
关键字:

在jsp内置对象中