JSP中Out和Request对象详解

  内置表示不需要new便可直接使用。

一、基础知识

  1.缓冲区:IO最原始是一个一个字节的读取,这就像吃米饭的时候一粒一粒的吃,很没有效率,这时候就有了碗,一碗一碗的吃,岂不痛快。

  2.Get提交不能超过2k,安全性不高,查询、搜索时做,效率高,Post提交的信息在Html header里,信息量大,在注册、修改、上传时候。

二、out内置对象

  向客户端输出信息,是JspWriter的对象,常用的有println、flush和clear和clearbuffer,后两者的区别是,潜着在flush调用后会抛出异常,前者不会....抛出异常部分后面的代码都不会被执行,还有getBufferSize(缓冲区大小,如果不设置则为0),getRemaining(缓冲区剩余大小),isAutoFlush(缓冲区满时是否自动刷新)。

三、Request对象

  是HttpServletRequest的实力,客户端请求完成之前,一直存在。

 1 <%@ page language="java" contentType="text/html; charset=utf-8"%>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 3 <html>
 4 <head>
 5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 6 <title>Insert title here</title>
 7 </head>
 8 <body>
 9     <form name="regiserForm" action="mainPage.jsp" method="post">
10     <table>
11         <tr>
12             <td>姓名</td>
13             <td>
14                 <input type="text" name="userName">
15             </td>
16         <tr>
17         <tr>
18             <td>爱好</td>
19             <td>
20                 <input type="checkbox" name="favourite" value="羽毛球">羽毛球
21                 <input type="checkbox" name="favourite" value="篮球">篮球
22                 <input type="checkbox" name="favourite" value="网球">网球
23                 <input type="checkbox" name="favourite" value="足球">足球
24             </td>
25         </tr>
26         <tr>
27             <td colspan=2>
28                 <input type="submit" value="提交">
29             </td>
30         </tr>
31     </table>
32     </form>
33 </body>
34 </html>

  这是注册页面,第一点需要注意的是

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

  charset在contentType里面(看冒号),单独写的话提示找不到属性。第二点是布局问题,名字和input分别占用一个td,工两个td,所以下面的提交是colspan=2。

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
    request.setCharacterEncoding("UTF-8");
    String userName= request.getParameter("userName");
    String[] favourite = request.getParameterValues("favourite");
    out.println("姓名&nbsp&nbsp&nbsp"+userName);
    out.print("爱好");
    for (int i=1; i<favourite.length; i++) {
        out.println("&nbsp&nbsp&nbsp"+favourite[i]);
    }
%>

</body>
</html>

  由于页面编码方式都是UTF-8,但是参数传输方式默认是ISO-8859-1,所以现浏览器里的结果是乱码。在接受参数之前加入

 request.setCharacterEncoding("UTF-8");

  

  下面测试Get传递参数

1 <!-- 直接这样会出现空指针异常,因为并没有传递爱好属性,而mainPage直接去获取爱好,所以空指针,因此需要判断一下 -->
2     <a href="mainPage.jsp?userName=李四">测试Get方法(URL传参数)</a>

..........................

    request.setCharacterEncoding("UTF-8");

    String userName= request.getParameter("userName");
    out.println("姓名&nbsp&nbsp&nbsp"+userName);
    if(request.getParameterValues("favourite")!=null) {
        String[] favourite = request.getParameterValues("favourite");

        out.print("爱好");
        for (int i=1; i<favourite.length; i++) {
            out.println("&nbsp&nbsp&nbsp"+favourite[i]);
        }
    }

  按理说这种方式传递中文不论地址栏还是现实的结果都会是乱码,但是我这竟然没有,如果有的话

   <Connector port="9999" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

  配置Tomcat下的server.xml,第一个Connector,可以修改端口号,同事最后加入URIEncoding这个属性。或者

String str= request.getParameter("userName");
String userName = new String(str.getBytes("ISO-8859-1"),"UTF-8");

  还有一种就是为Connector 节点添加useBodyEncodingForURI="true" 属性即可。

  还可以在request对象里setAttribute(‘"password","123456")下面通过getAttribute("password")来获得,原来是getParameter。

  getContentType:或者MIME类型

  getProtocol:协议类型和版本号

  getServerPort:服务器端口号

  getRemoteAddr:客户端的IP地址

  真是的IP地址因为是动态IP,所以找不到真是的。

时间: 2024-10-18 01:51:04

JSP中Out和Request对象详解的相关文章

jsp的9大内置对象详解

一:内置对象相关解释以及种类 1.内置对象,顾名思义,就是在jsp中不用new的对象,jsp中自带的,可以直接使用的2.jsp中有9大内置对象,分别是:请求对象:request输出对象:out响应对象:response应用程序对象:application会话对象:session页面上下文对象:pageContext页面对象:page配置对象:config异常对象:exception 二:详解其中几个重要的事内置对象 (一)request(1)request:作用域:仅限于一次请求,请求对象,存储

jsp request 对象详解

1.request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例. 序号 方 法 说 明 1   object getAttribute(String name) 返回指定属性的属性值 2   Enumeration getAttributeNames() 返回所有可用属性名的枚举 3   String getCharacterEncoding() 返回字符编码方式 4   int getConten

response对象和request对象详解

request方法列举:request.getAuthType() // 获取保护servlet的认证方案名(BASIC或SSL),未受保护的servlet返回的就是nullrequest.getCharacterEncoding() // 获取字符编码request.getContentLength()// 返回请求体内容的长度request.getContentType() // 获取内容类型request.getContextPath() // 获取上下文路径,就是"/"+工程名

Django中的request对象详解

URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函数. 下面说说HttpRequest对象: 他其实是一个实例对象,属性有: 1 HttpRequest.scheme 请求的协议,一般为http或者https,字符串格式(以下属性中若无特殊指明,均为字符串格式) 2 HttpRequest.body http请求的主体,二进制格式. 3 HttpRequest.path 所请求页面的完整路径(但不包括协议以及域名),也

django的views里面的request对象详解大全

简介 HTTP 应用的信息是通过 请求报文 和 响应报文 传递的,关于更多的相关知识,可以阅读<HTTP权威指南>获得. 其中 请求报文 由客户端发送,其中包含和许多的信息,而 django 将这些信息封装成了 HttpRequest 对象,该对象由 HttpRequest 类创建.每一个请求都会生成一个 HttpRequest 对象,django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象. 例如: def index(request):

JavaScript中的Event事件对象详解

JavaScript事件[event] 在JavaScript中对于事件来讲,首先,我们需要了解这样几个概念:事件:事件处理程序:事件类型:事件流:事件冒泡:事件捕获:事件对象:浏览器内核:事件绑定:事件方面的性能优化(事件委托.移除事件处理程序):常见的浏览器兼容问题等. 什么是事件event: JavaScript事件是:浏览器.文档(document)窗口中的发生的特定的交互瞬间:而JavaScript和HTML之间的交互行为就是通过事件来触发的. 事件处理程序: 事件处理程序:我们用户在

JSP中的内置对象和Struts中的Web资源的详解

JSP中的内置对象有如下几种: request :继承于HttpServletRequest, HttpServletRequest继承ServletRequest, 获得的Request对象的方法:只能在Servlet中获取的doGet()和doPost()方法中获取 作用:封装用户请求信息 response   : 继承于HttpServletResponse,   HttpServletResponse继承ServletResponse 获得response对象的方法:只能在Servlet

JavaWeb学习(三)----JSP内置对象详解

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4065790.html 联系方式:[email protected] [系列]JSP学习系列文章:(持续更新) JavaWeb学习(一)----JSP简介及入门(含Tomcat的使用) JavaWeb学习(二)----JSP脚本元素.指令元素.动作元素 JavaWeb学习(三)----JSP内置对象

JSP request.setAttribute()详解及实例

 javascript request.setAttribute()详解 request.setAttribute()怎么用的? JSP1代码 ? 1 2 3 4 5 String [] test=new String[2]; test[0]="1"; test[1]="2"; request.setAttribute("test",test) ; response.sendRedirect("jsp2.jsp"); JSP2