#java #web JSP内置对象(上) —— 内置对象概述与out、response对象

本文深入解析JSP内置对象,包括out、request等关键对象的功能与使用方法,演示如何通过这些对象实现数据输出与请求处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#java #web  JSP内置对象(上)—— 内置对象概述与out、response对象

 

目录

#java #web  JSP内置对象(上) 内置对象概述与out、response对象

1、Jsp内置对象

1.1 内置对象简介

1.2 补充知识

2、部分内置对象介绍

1.1 out对象

2.2 request对象


1、Jsp内置对象

1.1 内置对象简介

Jsp内置对象是Web容器所创建的以组对象,不需要使用new关键字就可以使用的内置对象。

Jsp有9大内置对象:out、request、response、session、application、page、pageContext、exception、config

1.2 补充知识

1、Web应用程序请求与响应模式

用户发送请求(request)

服务器给用户响应(response)

2、缓冲区

缓冲区:Buffer,内存一块区域用来保存临时数据。

3、get与post

如下所示的表单标签,

<form name="regForm" action="动作" method="提交方式"></form>

提交方式有get与post。

get:以明文方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过2KB。安全性较低但效率比post高。适合提交数据量不大,安全性不高的数据。比如:搜索、查询等功能。

post:将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性高的用户信息,比如:注册、修改、上传等功能。

例如:

(1)、新建一个jsp页面,命名为login.jsp,内容如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title>login</title>
</head>
<body>
<h1>login</h1>
    <form name="regForm" action="doLogin.jsp" method="get">
        user:<input type="text" name="user"><br />
        password:<input type="password" name="password"><br />
        <input type="submit">
    </form>
</body>
</html>

(2)、新建一个jsp页面,名为doLogin.jsp,内容如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome</h1>
</body>
</html>

(3)、运行login.jsp,显示如下:

(4)、随便输入user和password,点击确定,跳转到了doLogin.jsp页面,可以看到地址栏里面的链接后面有我们之前输入的用户名和密码:

(5)、将login.jsp文件中Form标签个method属性从get改成post,重复上述步骤,可以发现地址栏里面没有了我们输入的账号密码:

 

2、部分内置对象介绍

1.1 out对象

out对象是JspWriter类的实例,是向客户端输出内容常用的对象。

常用方法如下:

void println() //向客户端打印字符串

void clear() //清除缓冲区的内容,如果flush之后调用会在控制台抛出异常

void clearBuffer() //清除缓冲区的内容,如果在flush之后不会抛出异常

void flush() //将缓冲区的内容输出到客户端

int getBufferSize() //返回缓冲区字节大小,如果不设缓冲区则为0

int getRemaining() //返回缓冲区还剩余的空间

boolean isAutoFlush() //返回缓冲区满时,时自动清空还是抛出异常

void close() //关闭输出流

例如:

<body>

<%

    out.println("<h1>你好</h1>");

    //out.clear();  //假如这里使用了clear会怎么样?这个方法放在flush()后会怎么样?

    out.flush();  //假如这个被注释了会怎样?

    out.println("<h2>你好</h2>");

%>

    缓冲区大小:<%=out.getBufferSize()%><br />

    缓冲区剩余大小:<%=out.getRemaining()%><br />

    是否自动清空缓冲区:<%=out.isAutoFlush()%>

</body>

2.2 request对象

客户端的请求信息被封装在request对象中,通过它才能了解到客户端的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前一直有效。

常用方法如下:

String getParameter(String name) //返回name指定参数的参数值

String[]getParameterValues(String name) //返回包含参数name的所有值的数组

void setAttribute(String,Object) //存储此请求中的属性

Object getAttribute(String name) //返回指定属性的属性值

String getContentType() //得到请求体的MIME类型

String getProtocol() //得到请求用的协议类型及版本号

String getServerName() //返回接受请求的服务器主机名

int getServerPort() //返回服务器接受此请求所用的端口号

String getCharacterEncoding() //返回字符编码方式

void setCharacterEncoding() //设置请求的字符编码方式

int getContentLength() //返回请求体的长度(单位:字节)

String getRemoteAddr() //返回发送此请求的客户端IP地址

String getRealPath(String path) //返回一虚拟路径的真实路径

String getContextPath() //返回上下文路径

例如:

(1)、新建一个jsp文件,命名为register,内容如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>register</title>
</head>
<body>
    <h1>register</h1>
    <form name="regForm" action="request.jsp" method="post">
        <table>
            <tr>
                <td>user:</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td>hobby:</td>
                <td>
                    <input type="checkbox" name="favorite" value="read">读书
                    <input type="checkbox" name="favorite" value="music">音乐
                    <input type="checkbox" name="favorite" value="movie">电影
                    <input type="checkbox" name="favorite" value="internet">上网
                </td>
            </tr>
            <tr>
                <td colspam="2"><input type="submit" value="submit"></td>
            </tr>
        </table>
</form>
<a href="request.jsp?username=list">测试URL传参数</a>
</body>
</html>

(2)、新建一个jsp文件,命名为request,内容如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>register</title>
</head>
<body>
<h1>Register successful!</h1>
<%
    request.setCharacterEncoding("utf-8");//设置获取参数的编码,防止乱码
    request.setAttribute("password", "123");
%>
<%--这里函数里的字符串参数和之前用户名的input的name一样 --%>
    用户名:<%=request.getParameter("username")%><br />
    爱好:
<%
    if (request.getParameterValues("favorite") != null) {
    //这里函数里的字符串参数和之前用户名的checkbox的name一样
    String[] favorite = request.getParameterValues("favorite");
        for (int i = 0; i < favorite.length; i++) {
            out.println(favorite[i] + "&nbsp;&nbsp;");
        }
    }
%><br />
密码:
<%
    //这里的密码是上面setAttribute存入的密码
    out.println(request.getAttribute("password"));
%><br />
    请求的MIME类型:<%=request.getContentType() %><br />
    协议类型与版本号:<%=request.getProtocol() %><br />
    服务器主机名:<%=request.getServerName() %><br /> 
    服务器端口:<%=request.getServerPort() %><br />
    请求文件的长度:<%=request.getContentLength() %><br />
    请求客户端的ip地址:<%=request.getRemoteAddr() %><br />
    请求的真实路径:<%=request.getRealPath("request.jsp") %><br />
    请求的上下文路径:<%=request.getContextPath() %><br />
</body>
</html>

(3)、运行register.jsp,显示如下:

(4)、随意填写user和hobby,点击submit,可以发现,跳转到了request.jsp页面,而且页面获取到了曾经输入的user和hobby:

(5)、返回register页面,点击测试URL传参数,可以发现,在a标签里的"?"后面的参数也成功的传递到了request.jsp:

注:如果url传中文参数有乱码,则需要用记事本或者编辑器打开tomcat目录下的conf目录下的server.xml文件,在如图所示位置添加Encoding="utf-8"后重启tomcat:

 

        关于java web的更多内容,可以到https://blog.youkuaiyun.com/weixin_41475710/column/info/32531查看,会持续更新。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值