JSP-隐式对象

我们可以在_jspservice方法中找到对应的局部变量,这些变量我们称之为隐式对象

n  提供内部隐式对象的目的是为了简化JSP开发

n  JSP 隐式对象是 Web 容器加载的一组类

n  不需要由JSP的编写者实例化,它们由JSP容器实现和管理。在所有JSP页面中都能使用内部对象。

n  内部对象只对表达式和Scriptlet有用,在声明中不能使用。

隐式对象的名称是 JSP 的保留字

JSP页面通信作用域

页面(page)  请求(request)  会话(session) 应用(application)

页面(page)

n  对应的隐式对象pageContext

n  在这个范围内定义的对象只与当前页面相关,当加载新页面时,就将其销毁(默认为此作用域)

request对象

n  请求(request)在用户本次请求过程中存在

¨  对应的隐式对象request

request.setAttribute(“key”, value);   request.getAttribute(“key”);

会话(session)

Session常用方法: 一直存在于会话中,直至其终止或被删除

       voidsetAttribute(name);   ObjectgetAttribute(name);

       voidremoveAttribute(name);   voidinvalidate();

application对象

n  应用(application)  对应的隐式对象application

表示JSP 页面所属的应用程序

应用程序的 JSP 页面组合起来形成一个应用程序,是使用范围最广的上下文状态。它允许 JSP 页面的 servlet 与包括在同一应用程序中的任何 Web 组件

共享信息 ,在整个页面中均可使用

n  javax.servlet.ServletContext接口实例

n  application对象最常用的方法有:

¨  void setAttribute(String name,Object value)

   以键/值的方式,将一个对象的值存放到application中

¨  Object getAttribute(String name)

根据名称去获取application中存放对象的值

request对象

n  接收客户端的请求参数,包括来自GET/POST方法的参数

n  实现javax.servlet.http.HttpServletRequest接口

n  request对象的常用方法

¨  String getParameter(String name)

¨  String[] getParameterValues(String name)

¨  void setAttribute(String key, Object value)

¨  Object getAttriubte(String key)

¨  void setCharacterEncoding(String enc)

¨  getSession()

get请求

  String userName = request.getParameter(“userName”);

此时服务器将客户端传来的编码当成了iso8859-1,然后解析成了错误的字符串

我们先得到传来的编码:

byte[] data =userName.getBytes(“iso8859-1”);

然后重新指定编码的真实类型:userName = new String(data, “gbk”);

如果post请求,我们可以采用以下方案:

  request.setCharacterEncoding(“gbk”);

  String userName = request.getParameter(“userName”);

n  假定存在一个请求需要多个jsp页面合作完成

request.getRequestDispatcher(“”).forward()

request其它应用

String clientIP = request.getRemoteHost();  //IP地址

int clientPort = request.getRemotePort();           //端口号

HttpSession mySession =request.getSession();          //会话

String uri = request.getRequestURI();          //URI

String method = request.getRequestMethod();  //请求方法

int length = request.getContentLength();     //数据的数量

InputStream is = request.getInputStream(); //得到输入流

response对象

n  常用方法

¨  void setContentType (String name)

              设置作为响应生成的内容的类型和字符编码

¨  void sendRedirect (String name)

            发送一个响应给浏览器,指示其应请求另一个URL

¨  void setCharacterEncoding(String charset)

              设置响应内容的字符集

request.getRequestDispatcher(“”).forward(request,response);

              VS

response.sendRedirect(“”);

转发是在服务器端发挥作用,通过forward方法将提交信息在多个页面间进行传递。是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址

重定向是在客户端发挥作用,通过请求新的地址实现页面转向,是通过浏览器重新请求地址,在地址栏中可以显示转向后的地址

 

当服务器端调用response.sendRedirect (“http://www.g.cn”)时,服务器将向客户端发出如下响应结果:

HTTP/1.1 302 Moved Temporarily

Server: Apache-Coyote/1.1

Location: http://www.g.cn

Content-Length: 0

Date: Fri, 17 Apr 2009 04:18:05 GMT

客户端收到响应后重新请求Location指定的位置

out对象

n  用于向客户端输出内容

n  也可以通过response.getWriter()得到

n  write()、print()、println()

              <%  out.print(“欢迎来到 JSP:隐式对象”) ;

              out.write(“欢迎来到 JSP:隐式对象”) ;

              out.writ(48);

              out.print(48);

              out.println(48);%>

exception对象

n  exception对象用于处理 JSP 页面中的错误

n  exception 对象用于访问执行 JSP 的过程中引发的异常

n  exception 对象是 java.lang.Throwable 类的实例

状态管理(Session)

     Cookie是Web服务器保存在客户端的一系列文本信息

     Cookie的作用

     对特定对象的追踪

     统计网页浏览次数

     简化登录

     安全性能:容易信息泄露

     导入包:import="javax.servlet.http.Cookie"

     创建Cookie

Cookie newCookie=newCookie("parameter", "value");

     parameter:用于代表cookie的名称(key)

     value:用于表示当前key名称所对应的值

     写入Cookie:response.addCookie(newCookie)

     设置Cookie属性的常用方法

类型

方法名称

说  明

void

setMaxAge(int expiry)

设置Cookie的有效期,以秒为单位

void

setValue(String value)

在Cookie创建后,对Cookie进行赋值

String

getName()

获取Cookie的名称

String

getValue()

获取Cookie的值

String

getMaxAge()

获取Cookie的有效时间,以秒为单位

------从登录验证页面表单中获取用户名------

<% Stringusername=reqeust.getParameter("username");

//以key/value的形式创建Cookie

Cookie uname=new Cookie("uname", username);

response.addCookie(uname);

... ... %>

-----在显示页面显示用户名---------------

<%//获取请求中的Cookie,以数组方式保存

      Cookie cookies[ ]=request.getCookies();

      //循环遍历数组,得到key=uname的Cookie

     for(int i=0;i<cookies.length;i++){

              Cookie ucookie=cookies[i];

             if(ucookie.getName().equals("uname”));//判断Cookie的名称

 %>

    欢迎你:<%=ucookie.getValue() %>//获取key对应的value,输出显示

<%  } %>

Cookie与session的比较

     session是在服务器端保存用户信息,Cookie是在客户端保存用户信息

     session中保存的是对象,Cookie保存的是字符串

     session随会话结束而关闭,Cookie可以长期保存在客户端

     Cookie通常用于保存不重要的用户信息,重要的信息使用session保存

Application:多个用户共享该对象,可以做计数器

pageContext:代表JSP页面上下文

page:代表JSP这个实例的本身

config:代表JSP对应的servlet的配置,可以得到web.xml中的参数


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值