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

#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

#java #web JSP内置对象(上) —— 内置对象概述与out、response对象_第1张图片

1.2 补充知识

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

用户发送请求(request)

服务器给用户响应(response)

2、缓冲区

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

3、get与post

如下所示的表单标签,

提交方式有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"%>




    login


login

user:
password:

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

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




    Welcome


    

Welcome

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

#java #web JSP内置对象(上) —— 内置对象概述与out、response对象_第2张图片

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

#java #web JSP内置对象(上) —— 内置对象概述与out、response对象_第3张图片

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

#java #web JSP内置对象(上) —— 内置对象概述与out、response对象_第4张图片

 

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() //关闭输出流

例如:



<%

    out.println("

你好

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

你好

"); %> 缓冲区大小:<%=out.getBufferSize()%>
缓冲区剩余大小:<%=out.getRemaining()%>
是否自动清空缓冲区:<%=out.isAutoFlush()%>

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"%>



    
    register


    

register

user:
hobby: 读书 音乐 电影 上网
测试URL传参数

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

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>



    
    register


Register successful!

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

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

#java #web JSP内置对象(上) —— 内置对象概述与out、response对象_第5张图片

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

#java #web JSP内置对象(上) —— 内置对象概述与out、response对象_第6张图片

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

#java #web JSP内置对象(上) —— 内置对象概述与out、response对象_第7张图片

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

#java #web JSP内置对象(上) —— 内置对象概述与out、response对象_第8张图片

 

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

 

你可能感兴趣的:(java,web,java,web)