`
小哥1900
  • 浏览: 55448 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

(ZZ)总结:JSP脚本内置对象之request对象

阅读更多
总结:JSP脚本内置对象之request对象

request对象是HttpServletRequest的实例,每个request对象封装了一次用户请求,并且封装了该次请求的所有请求参数。另外,request也代表了本次请求的范围,从而可以操作request范围的属性。request对象的作用主要有三:

1、  获取请求参数/请求头(返回的都是String类型值或者是String类型值的集合)

获取请求头的常用方法

String getHeader(String name) 返回指定请求头名的属性值;

Enumeration getHeaderNames() 返回所有请求头名的集合对象;

Enumeration getHeaders(String name) 返回指定请求头名的多个属性值集合(当该请求头有多个值时);

实例:

<% 

//取得所有请求头属性名的集合

Enumeration header = request.getHeaderNames();

while (header.hasMoreElements())

{

String headerName = (String) header.nextElement();

//取得指定属性名的请求头的属性值

String headerValue = request.getHeader(headerName);

//输出到页面

       out.println(headerName + ":" + headerValue + " <br />");

}

%>

获取请求参数的常用方法

String getParameter(String name) 获取指定请求参数名的请求参数值;

Map getParameterMap() 获取所有请求参数名及请求参数值所组成的Map对象;

Enumeration getParameterNames() 获取所有请求参数名组成的集合对象;

String[] getParameterValues(String name)  获取指定请求参数名的请求参数值,当该请求参数有多个值时,返回的是其所有请求参数值组成的字符串数组;

示例:

<%

String userName = null;

String password = null;

//当是post方式生成的请求参数时

if (request.getMethod().equalsIgnoreCase("post"))

{

       request.setCharacterEncoding("gbk");

//获得指定的请求参数值

       userName = request.getParameter("username");

       password = request.getParameter("password");

}

//如果是get方式生成的请求参数

else

{

       //获得指定的请求参数值

       userName = new String(request.getParameter("username").getBytes("iso-8859-1") , "gbk");

       password = new String(request.getParameter("password").getBytes("iso-8859-1") , "gbk");

}

%>

一般来说,有name属性的表单域才会生成请求参数。一个有name属性的表单域对应一个请求参数值,name指定该请求参数名,value指定请求参数值;当多个表单域用相同的请求参数名时,则只会生成一个请求参数,但该请求参数有多个值;如果某个表单域设置了disabled=”true”,则该表单域不会生成请求参数。

2、  操作request范围的属性

setAttribute(String name, Object o) 将o设置成request范围的属性;

Object getAttribute(String name) 取得指定属性名的request范围属性;

获取request范围属性时,得到的类型总是Object,需要进行强制类型转换,并且,任何类型属性都可以被设置成为request范围的属性。

示例:

//定义一个Person类

Class Person

{

public String name;

public int age; 

Person(String name ,  int age)

{

this.name = name;

this,age = age;

}

}

//在一个JSP页面中生成Person类的实例p,并且取得p的name属性,并设置成为request范围的属性

<%

Person p = new Person(“abc” , 20);

String name = p.name;

request.setAttribute(“person”, p);

request.setAttribute(“name”, name);

%>

<jsp:forward page=”target.jsp”/>

//在target.jsp中将可以接收到该request范围的属性

<%

Person p = (Person)request.getAttribute(“person”);

String name = (String)request.getAttribute(“name”);

out.println(p + “,” + “name”);

%>

3、  执行forward或者include

跟JSP提供的forward及include指令一样,动态将页面跳转到另一个页面或者将另一个页面动态插入到当前页面。实际上是通过getRequestDispatcher(String path) 方法获得RequestDispatcher类的一个实例,封装了希望跳转或者包含的页面目标路径(即形参path所代表的),再调用RequestDispatcher类实例的forward(ServletRequest request, ServletResponse response)方法执行页面forward跳转,或者include(ServletRequest request, ServletResponse response) 方法执行页面包含动作。

示例:(请注意:包含或者调整页面的路径前要以”/”开头)

<%

//跳转页面到getHeader.jsp

request.getRequestDispatcher("/getHeader.jsp").forward(request , response);

%>

 

<%

//将页面result.jsp包含进当前页面

request.getRequestDispatcher("/result.jsp").include (request , response);

%>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics