JSP内置对象

1.JSP九大内置对象

request、response、session、application、out、pageconText、config、page、exception

内置对象无法点出的解决方法:

点击选中工程,点击File,点击project Structure,点击libraries,点击加,点击java,选择tomcat的安装目录中的lib目录中的servlet.api.jar,点击ok即可

转载:IDEA提示JSP页面不能使用内置对象解决方法_xiaoyue-CSDN博客

2.request对象 

 2.1获取表单实现

文件一:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="demo02.jsp" method="post">//添加post就会加密,解决中文乱码
        <table>
            <tr>
                <td>用户名</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="确定"></td>
            </tr>
        </table>
    </form>
</body>
</html>
文件二:
<%@ 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");
    %>
    <%= username%>
</body>
</html>

2.2获取转发实现

文件一:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="demo02.jsp" method="post">
        <table>
            <tr>
                <td>用户名</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="确定"></td>
            </tr>
        </table>
    </form>
</body>
</html>
文件二:
<%@ 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");
        //转发
        request.setAttribute("username",username);
        request.getRequestDispatcher("demo03.jsp").forward(request,response);
    %>
    <%= username%>
</body>
</html>
文件三:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
demo03
<%
    String username = (String) request.getAttribute("username");
%>
<%= username %>
</body>
</html>

实现转发功能,点击页面一的提交,出现的是demo03的页面,其中demo02的值经过了转发

另外,转发的url地址不变,还是demo02的url

转发和重定向 

转发

重定向

转发

行为方式

客户端行为

服务器端行为

客户端发送请求次数

1次

2次

客户端地址栏是否改变

不变

 

 3.重定向

 

文件一:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="demo02.jsp" method="post">
        <table>
            <tr>
                <td>用户名</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="确定"></td>
            </tr>
        </table>
    </form>
</body>
</html>
文件二:
<%@ 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");
        //重定向
        response.sendRedirect("demo03.jsp");
    %>
    <%= username%>
</body>
</html>
文件三:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
demo03
<%
    String username = (String) request.getAttribute("username");
%>
<%= username %>
</body>
</html>

重定向,直接这样,值为null

 

4.session 

 4.1解决重定向的缺陷

 

文件一:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="demo02.jsp" method="post">
        <table>
            <tr>
                <td>用户名</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="确定"></td>
            </tr>
        </table>
    </form>
</body>
</html>
文件二:
<%@ 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");
        //转发
//        request.setAttribute("username",username);
//        request.getRequestDispatcher("demo03.jsp").forward(request,response);
        //重定向
//        response.sendRedirect("demo03.jsp");
        //session
        session.setAttribute("username",username);
        response.sendRedirect("demo03.jsp");
    %>
    <%= username%>
</body>
</html>
文件三:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
demo03
<%
//    String username = (String) request.getAttribute("username");//重定向
    String username = (String) session.getAttribute("username");
%>
<%= username %>
</body>
</html>

4.2保留数据时间

session.setAttribute("username",username);
session.setMaxInactiveInterval(3);//在重定向后保留时间
response.sendRedirect("demo03.jsp");

 4.3request和session的区别

 

第一个文件:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setAttribute("username1","杨幂");//重定向不可以
    session.setAttribute("username2","迪丽热巴");//转发,重定向可以接收
    response.sendRedirect("demo05.jsp");
%>
</body>
</html>
第二个文件:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String username1 = (String)request.getAttribute("username1");//重定向不可以
    String username2 = (String)session.getAttribute("username2");//转发,重定向可以接收
%>
<%= username1 %><br/>
<%= username2 %>
</body>
</html>

在重定向的时候,request不可以获取到,但是session可以,request请求的生命周期和session的区别

5.application

解决session的缺陷:此时换浏览器就重新计数

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    Integer fangwen = (Integer)session.getAttribute("fangwen");
    if (fangwen != null){
        fangwen+=1;
    }else{
        fangwen=1;
    }
    session.setAttribute("fangwen",fangwen);
%>
网站访问人数:
<%= session.getAttribute("fangwen") %>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    Integer fangwen = (Integer)application.getAttribute("fangwen");
    if (fangwen != null){
        fangwen+=1;
    }else{
        fangwen=1;
    }
    application.setAttribute("fangwen",fangwen);
%>
网站访问人数:
<%= application.getAttribute("fangwen") %>
</body>
</html>

换为application则全局共享,服务器不炸就没事

6.pageContext对象 

页面一:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    pageContext.setAttribute("name", "啦啦啦");
%>
demo07页面:
<%= pageContext.getAttribute("name") %>
<% pageContext.include("demo08.jsp"); %>
</body>
</html>
页面二:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
demo08页面:
<%= pageContext.getAttribute("name") %>
</body>
</html>

显示两个页面的内容,url为原来的路径,但是设置的值只在本页面显示

 

 7.cookies缓存

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<%
    Cookie cookie1 = new Cookie("username","tom");
    Cookie cookie2 = new Cookie("pwd","123456");
    response.addCookie(cookie1);
    response.addCookie(cookie2);
    response.sendRedirect("demo002.jsp");
%>
<body>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    Cookie[] cookies = request.getCookies();
    String username = "";
    String pwd = "";
    for (int i = 0; i < cookies.length; i++){
        if (cookies[i].getName().equals("username")){
            username = cookies[i].getValue();
        }
        if (cookies[i].getName().equals("pwd")){
            pwd = cookies[i].getValue();
        }
    }
    out.print("用户名:"+username+",密码:"+pwd);
%>
</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值