JSP数据交互(一)

内置对象:

  JSP内置对象是Web容器创建一组对象,不用通过手动new就可以使用

JSP九大内置对象:

   名称                                                类型                      作用域                     

  session  (用来保存会话信息,可以实现在同一-用户的不同请求之间共享数)          javax.servlet.http.HttpSession                  Session  

  application  (代表了当前应用程序的上下文,可以在不同的用户之间共享信息)         javax.servlet.ServletContext                    Application

  out  (用户向客户端,浏览器你输出数据)                        javax.servlet.jsp.JspWriter                   page

  request  (封装了来自客户端,浏览器的各种信息)                    javax.servlet.ServletRequest                 Request

  response  (封装了服务器的响应信息)                          javax.servlet.SrvletResponse                 page

  pageContext  (提供了对JSP页面所有对象以及命名空间的访问)              javax.servlet.jsp.PageContext                 page

  page  (指向了当前JSP程序本身)                            javax.lang.Object                       page

  exception  (封装了JSP程序执行过程中发生的异常和错误信息)               javax.lang.Throwable   

  config  (封装了应用程序的配置信息)                            javax.servlet.ServletConfig                  page

out对象:

  方法名          说明

  print或println      输出数据

  newLine        输出换行字符

  flush           输出缓冲区数据

  close          关闭输出流

  clear           清除缓冲区数据,但不输出到客户端

  clearBuffer       清除缓冲区数据,输出到客户端

  getBufferSize        获得缓冲区大小

  getRemaining        获取缓冲区中没有被占用的空间

  isAutoFlush         是否为自动输出

request对象:

  方法名          说明

  isUserRole      判断认证后的用户是否属于某一成员组

  getAttribute      获取指定属性的值,如该属性不存在返回null

  getAttributeNames   获取所有属性名的集合

  getCookies      获取所有Cookie对象

  getCharacterEncoding 获取请求的字符编码方法

  getContentLength   返回请求正文的长度,如不确定返回-1

  getHeader       获取指定名字报头值

  getHeaders      获取指定名字报头的所有值,一个枚举

  getHeaderNames   获取所有报头的名字,一个枚举

  getInputStream    返回请求输入流,获取请求中的数据

  getMethod      获取客户端向服务器端传送数据的方法

  getParameter      获取指定名字的参数值

  getParameterNames  获取所有参数的名字,一个枚举

  getParameterValues  获取指定名字参数的所有值

  getProtocol      获取客户端向服务器端传送数据的协议名称

  getQueryString     获取一get方法向服务器传送的查询字符串

  getRequestURL   获取发出请求字符串的客户端地址

  getRemoteAddr   获取客户端的IP地址

  getRemoteHost    获取客户端的名字

  getSession      获取和请求相关的会话

  getServerName    获取服务器的名字

  getServerPath    获取客户端请求问价的路劲

  getServerPort    获取服务器的端口号

  removeAttribute    删除请求中的一个属性

  setAttribute      设置指定名字参数值

response对象:

  方法名          说明

  addCookie      添加一个Cookie对象

  addHeader      添加Http文件指定名字开头信息

  containHeader    判断指定名字Http文件信息是否存在

  encodeURL      使用sessionid封装URL

  flushBuffer      强制把当前缓冲区内容发送到客户端

  getBufferSize     返回缓冲区大小

  getOutputStream    返回客户端的输出对象

  sendError        向客户端发送错误信息

  sendRedirect     把响应发送到另一个位置进行处理

  setContentType    设置响应的MIME类型

  setHeader        设置指定名字的Http文件头信息

session对象:

  方法名          说明

  getAttribute      获取指定名字的属性

  getAttributeNames   获取session中全部的属性名字,一个枚举

  getCreationTime    返回色session的创建时间

  getId          获取回话标识符

  getLastAccessedTime   返回最后发送请求的时间

  getMaxInactiveInterval  返回session对象的生存时间单位千分之一秒

  invalidate       销毁session对象

  isNew          每个请求是否会产生新的session对象

  removeAttribute    删除指定名字的属性

  setAttribute      设置指定名字的属性值

application对象

  方法名            说明

  getAttribute      获取应用对象中指定名字的属性值

  getAttributeNames    获取应用对象中所有属性的名字,一个枚举

  getInitParameter      返回应用对象中指定名字的初始参数值

  getServletInfo     返回Servlet编译器中当前版本信息

  setAttribute      设置应用对象中指定名字的属性值

config对象:

  方法名            说明

  getServletContext    返回执行的Servlet的环境对象

  getServletName     返回所有执行的Servlet的名字

  getInitParamter     返回执行名字的初始参数值

  getInitParamterNames  返回该JSP中所有初始参数名,一个枚举

page对象:

  方法名            说明

  toString          将当前项目的信息打印出来

  getClass         返回当前Object类

  hashCode        返回page对象的hashCode值

  equals          用于比较对象是否与当前对象相同

pageContext对象:

  方法名            说明

  forword         重定向到另一页面或Servlet组件

  getAttribute        获取某范围中指定名字的属性值

  findAttribute       按范围搜索指定名字的属性

  removeAttribute      删除某范围中指定名字的属性

  setAttribute        设定某范围中指定名字的属性值

  getException        返回当前异常对象

  getRequest        返回当前请求对象

  getResponse        返回当前响应对象

  getServleConfig      返回当前页面的ServletConfig对象

  getServletContext      返回所有页面共享的ServletContext对象

  getSession         返回当前页面的会话对象

post和get的区别:
     1.从安全角度考虑   post更安全一些   get不安全 ;
     2.post方式提交数据可以提交大概几GB的数据   get方式提交数据最大也就到几KB;

解决乱码的方案:
    post乱码解决:request.setCharacterEncoding("UTF-8");
    get乱码解决: hobbys[i]=new String(hobbys[i].getBytes("ISO-8859-1"),"UTF-8");

HTTP状态码:

      1** 信息,服务器收到请求,需要请求者继续执行操作
      2** 成功,操作被成功接收并处理
      3** 重定向,需要进一步的操作以完成请求
      4** 客户端错误,请求包含语法错误或无法完成请求
      5** 服务器错误,服务器在处理请求的过程中发生了错误
  
404和500错误状态码配置页面:
         在当前项目的web.xml当中加入如下配置信息:
          <error-page>
           <error-code>500</error-code>
           <location>/500.jsp</location>
          </error-page>
          <error-page>
           <error-code>404</error-code>
           <location>/404.jsp</location>
          </error-page>

response:响应
      转发:(是在服务器内部进行,无法访问到除内部以外的资源):request.getRequestDispatcher("/response/welcome.jsp").forward(request, response);
      重定向:(全路径):response.sendRedirect("/Chap02/response/Login.jsp");

contentType和pageEncoding区别:

    contentType定义响应的资源类型,也可以包含JSP页面和响应内容的字符集;

    pageEncoding指定JSP文件的字符集及默认的contentType字符集;

转发和重定向区别:

         1.转发是在服务器内部进行,重定向是客户端完成的,需要写入全路径,地址xxxxxxx
         2.转发请求1次,其余的操作都是在服务器内部进行的;重定向请求至少2次,其余的请求命令客户端再次请求一个URL
         3.转发可以携带这次请求的数据,重定向不带数据

原文地址:https://www.cnblogs.com/tinghao/p/11124453.html