JSP之内置对象与作用域

九个内置对象:
pageContext, request, response, session, application, config, out, page, exception

四大作用域:
Page范围:只在一个页面中保存;javax.servlet.jsp.PageContext(抽象类)

<%
    //设置两个page范围数据key->value
    pageContext.setAttribute("name", "root");
    pageContext.setAttribute("password", 123456);
%>
<%
    //取值
    String name = (String) pageContext.getAttribute("name");
    int password = (Integer) pageContext.getAttribute("password");
%>
    用户名:<%=name%><br /> 密码:<%=password%><br />

Request范围:只在一个请求中保存数据;javax.servlet.http.HttpServletRequest(接口)

requestScope.jsp
<%
    //设置两个request范围数据key->value
    request.setAttribute("name", "root");
    request.setAttribute("password", 123456);
%>
<jsp:forward page="requestTarget.jsp"></jsp:forward>

requestTarget.jsp:
<%
    //取值
    String name = (String) request.getAttribute("name");
    int password = (Integer) request.getAttribute("password");
%>
用户名:<%=name%><br /> 密码:<%=password%><br />

Session范围:只在一个请求中保存数据,仅供单个用户使用;javax.servlet.http.HttpSession(接口)

sessionScope.jsp
<%
    //设置两个session范围数据key->value
    session.setAttribute("name", "root");
    session.setAttribute("password", 123456);
%>
设置完毕

sessionTarget.jsp
<%
    //取值
    String name = (String) session.getAttribute("name");
    int password = (Integer) session.getAttribute("password");
%>
用户名:<%=name%><br /> 密码:<%=password%><br />

Application范围:在整个服务器上保存数据,所有用户共享;javax.servlet.ServletContext(接口)

applicationScope.jsp
<%
    //设置两个session范围数据key->value
    application.setAttribute("name", "root");
    application.setAttribute("password", 123456);
%>
设置完毕

applicationTarget.jsp
<%
    //取值
    String name = (String) application.getAttribute("name");
    int password = (Integer) application.getAttribute("password");
%>
用户名:<%=name%><br /> 密码:<%=password%><br />

Session和Application的区别在于Appliaction是全局的,可以在不同的电脑上获取这些值,而Session只能在当前申请的浏览器下获取这些值。
Request和Session用的比较多。

使用<%@ page import=”java.util.*”%>来导入包

response对象:

//自动刷新
<%
    //每隔一秒刷新一次页面
    response.setHeader("refresh", "1");
    Date myData = new Date();
%>
当前时间:<%=myData.toLocaleString()%>

//重定向,不能带参数
<%
    response.sendRedirect("pageScope.jsp");
%>

post放在数据包里,安全
get放在Url后面
form提交基本都是用host

//操作cookie应用,cookie存在客户端,session存在服务器
response.jsp
<script type="text/javascript">
    function resetValue() {
        document.getElementById("userName").value = "";
        document.getElementById("password").value = "";
    }
</script>
<%
    String userName = null, pwd = null;
    Cookie[] cookies = request.getCookies();
    for (int i = 0; cookies != null && i < cookies.length; i++) {
        if (cookies[i].getName().equals("userNameAndPwd")) {
            userName = cookies[i].getValue().split("-")[0];
            pwd = cookies[i].getValue().split("-")[1];
        }
    }
    System.out.println(userName + pwd);
    if (userName == null) {
        userName = "";
    }
    if (pwd == null) {
        pwd = "";
    }
%>
<body>
    <form action="userLogin.jsp" method="post">
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" id="userName" name="userName"
                    value="<%=userName%>" /></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" id="pwd" name="pwd" value="<%=pwd%>" /></td>
            </tr>
            <tr>
                <td>记住密码:</td>
                <td><input type="checkbox" id="remember" name="remember"
                    value="remember-me" /></td>
            </tr>
            <tr>
                <td><input type="submit" value="登录" /></td>
                <td><input type="button" value="重置" onclick="resetValue()" /></td>
            </tr>
        </table>
    </form>
</body>

userLogin.jsp
<body>
    <%
        String userName = request.getParameter("userName");
        String pwd = request.getParameter("pwd");
        String remember = request.getParameter("remember");

        if ("remember-me".equals(remember)) {
            Cookie userNameAndPwd = new Cookie("userNameAndPwd", userName + "-" + pwd);
            userNameAndPwd.setMaxAge(1 * 60 * 60 * 24 * 7);
            response.addCookie(userNameAndPwd);//保存cookie
            System.out.print("设置cookie成功!");
        }
        response.sendRedirect("response.jsp");
    %>
</body>

out对象:向客户端输出各种类型数据,可以管理应用服务器上的输出缓冲区。

<%
    out.print(out.getBufferSize() + "<br/>");//总共缓冲区大小
    out.print(out.getRemaining());//未使用的缓冲区大小
%>

Config对象:JSP页面通过JSP容器初始化时被传递的对象。

exception对象:处理JSP文件在执行时发生的异常
在页头加上:<%@ page errorPage=”error.jsp”%>
在error.jsp头加上<%@ page isErrorPage=”true”%>会自动处理异常

pageContext对象:相当于页面中所有对象功能集合,能够访问到页面中所有对象。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值