本文主要介绍JSP中的request对象

request对象的主要方法:

setAttribute(String name,Object):设置名字为name的request的参数值

getAttribute(String name):返回由name指定的属性值

getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例

getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组

getCharacterEncoding():返回请求中的字符编码方式

getContentLength():返回请求的Body的长度

getHeader(String name):获得HTTP协议定义的文件头信息

getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例

getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例

getInputStream():返回请求的输入流,用于获得请求中的数据

getMethod():获得客户端向服务器端传送数据的方法

getParameter(String name):获得客户端传送给服务器端的有name指定的参数值

getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例

getParameterValues(String name):获得有name指定的参数的所有值

getProtocol():获取客户端向服务器端传送数据所依据的协议名称

getQueryString():获得查询字符串

getRequestURI():获取发出请求字符串的客户端地址

getRemoteAddr():获取客户端的IP地址

getRemoteHost():获取客户端的名字

getSession([Boolean create]):返回和请求相关Session

getServerName():获取服务器的名字

getServletPath():获取客户端所请求的脚本文件的路径

getServerPort():获取服务器的端口号

removeAttribute(String name):删除请求中的一个属性

1、获取请求参数值

在一个请求中,可以通过使用"?"的方式来传递参数,然后通过request对象的getParameter()方法来获取参数的值

例如:

String id = request.getParameter("id");

实战一下:

在index.jsp中加入下面代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="show.jsp?id=001">获取请求参数的值</a>
</body>
</html>

index.jsp

show.jsp中的代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
id的参数值为:
<%=request.getParameter("id")%><br> name的参数值为:<%=request.getParameter("name")%>
</body>
</html>

show.jsp

运行结果:

id的参数值为: 001
name的参数值为:null

乱码问题:

如果将上面的001改为中文,会出现乱码。

实战一下:

index.jsp

<%@page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.net.URLEncoder" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="show.jsp?name=<%=URLEncoder.encode("工学1号馆") %>&sex=<%=URLEncoder.encode("男") %>">解决中文乱码</a>
</body>
</html>

show.jsp

<body>
name参数的值为:
<%=new String(request.getParameter("name").getBytes("iso-8859-1"),"gbk")%>
sex参数的值为:<%=request.getParameter("sex")%>
</body>

可以看到,name值正常显示,sex值出现乱码

2、获取Form表单的信息

对于文本元素、单选按钮、下拉列表框都可以使用getParamer()方法获取其具体值

对于复选框以及多选列表框被选定的内容就要使用getParameterValue()方法来获取,给方法返回一个字符串数组,通过循环遍历这个数组就可以得到用户选定的具体内容

实战一下:

index.jsp

该页面创建一个form表单

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<%@page import="java.net.URLEncoder" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>'index.jsp'</title>
</head> <body>
<form action="show.jsp" method="post">
<ul style="list-style: none; line-height: 30px">
<li>
输入用户姓名:
<input type="text" name="name" />
<br />
</li>
<li>
选择性别:
<input name="sex" type="radio" value="男" />

<input name="sex" type="radio" value="女" />

</li>
<li>
选择密码提示问题:
<select name="question">
<option value="母亲生日">
母亲生日
</option>
<option value="宠物名称">
宠物名称
</option>
<option value="电脑配置">
电脑配置
</option>
</select>
</li>
<li>
请输入问题答案:
<input type="text" name="key" />
</li>
<li>
请选择个人爱好:
<div style="width: 400px">
<input name="like" type="checkbox" value="唱歌跳舞" />
唱歌跳舞
<input name="like" type="checkbox" value="上网冲浪" />
上网冲浪
<input name="like" type="checkbox" value="户外登山" />
户外登山
<br />
<input name="like" type="checkbox" value="体育运动" />
体育运动
<input name="like" type="checkbox" value="读书看报" />
读书看报
<input name="like" type="checkbox" value="欣赏电影" />
欣赏电影
</div>
</li>
<li>
<input type="submit" value="提交" />
</li>
</ul>
</form>
</body>
</html>

index.jsp

show.jsp页面

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>'show.jsp'</title>
</head> <body>
<ul style="list-style:none; line-height:30px">
<li>输入用户姓名:<%=new String(request.getParameter("name").getBytes("ISO8859_1"),"GBK") %></li>
<li>选择性别:<%=new String(request.getParameter("sex").getBytes("ISO8859_1"),"GBK") %></li>
<li>选择密码提示问题:<%=new String(request.getParameter("question").getBytes("ISO8859_1"),"GBK") %></li>
<li>
请输入问题答案:<%=new String(request.getParameter("key").getBytes("ISO8859_1"),"GBK") %>
</li>
<li>
请选择个人爱好:
<%
String[] like =request.getParameterValues("like");
for(int i =0;i<like.length;i++){
%>
<%= new String(like[i].getBytes("ISO8859_1"),"GBK")+"&nbsp;&nbsp;" %>
<%
}
%>
</li>
</ul>
</body>
</html>

show.jsp

3、获取请求客户端信息

<html>
<head>
<title>'index.jsp'</title>
</head>
<body>
<div style="width: 600px">
<ul style="line-height:24px">
<li>客户使用的协议:<%=request.getProtocol() %>
<li>客户端发送请求的方法:<%=request.getMethod() %>
<li>客户端请求路径:<%=request.getContextPath() %>
<li>客户机IP地址:<%=request.getRemoteAddr() %>
<li>客户机名称:<%=request.getRemoteHost() %>
<li>客户机请求端口号:<%=request.getRemotePort() %>
<li>接爱客户信息的页面:<%=request.getServletPath() %>
<li>获取报头中User-Agent值:<%=request.getHeader("user-agent") %>
<li>获取报头中accept值:<%=request.getHeader("accept") %>
<li>获取报头中Host值:<%=request.getHeader("host") %>
<li>获取报头中accept-encoding值:<%=request.getHeader("accept-encoding") %>
<li>获取URI:<%= request.getRequestURI() %>
<li>获取URL:<%=request.getRequestURL() %>
</ul>
</div>
</body>
</html>

运行结果如下:

  • 客户使用的协议:HTTP/1.1
  • 客户端发送请求的方法:GET
  • 客户端请求路径:/3.01
  • 客户机IP地址:0:0:0:0:0:0:0:1
  • 客户机名称:0:0:0:0:0:0:0:1
  • 客户机请求端口号:4777
  • 接爱客户信息的页面:/index.jsp
  • 获取报头中User-Agent值:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
  • 获取报头中accept值:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  • 获取报头中Host值:localhost:8080
  • 获取报头中accept-encoding值:gzip, deflate, sdch
  • 获取URI:/3.01/index.jsp
  • 获取URL:http://localhost:8080/3.01/index.jsp

4、cookie管理

cookie的getCookies()方法可以获取到所有的cookie对象集合

然后通过getName和getValue方法分别获取名称和值

index.jsp

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>'index.jsp'</title>
</head>
<body>
<%
String welcome = "第一次访问";
String[] info = new String[] { "", "", "" };
Cookie[] cook = request.getCookies();
if (cook != null) {
for (int i = 0; i < cook.length; i++) {
if (cook[i].getName().equals("mrCookInfo")) {
info = cook[i].getValue().split("#");
welcome = ", 欢迎回来! ";
}
}
}
%>
<%=info[0] + welcome%>
<form action="show.jsp" method="post"></form>
<ul>
<li>姓&nbsp;&nbsp;&nbsp;&nbsp;名: <input name="name" type="text"
value="<%=info[0]%>">
<li>出生日期: <input name="birthday" type="text" value="<%=info[1]%>">
<li>邮箱地址: <input name="mail" type="text" value="<%=info[2]%>">
<li><input type="submit" value="提交">
</ul> </body>
</html>

index.jsp

show.jsp

<body>
<%
String name = request.getParameter("name");
String birthday = request.getParameter("birthday");
String mail = request.getParameter("mail");
Cookie cook = new Cookie("mrCookInfo", name + "#" + birthday + "#"
+ mail);
cook.setMaxAge(60 * 60 * 24 * 365);//设置cookie的有效期
response.addCookie(cook);
%>
表单提交成功
<ul>
<li>姓名: <%=name%>
<li>出生日期: <%=birthday%>
<li>电子邮箱: <%=mail%>
<li><a href="index.jsp">返回</a>
</ul>
</body>

show.jsp

JSP内置对象--request对象的更多相关文章

  1. JSP内置九个对象Request请求对象

    jsp内置对象是什么呢? 例如Java语言使用一个对象之前需要实例化(也就是所说的new一个对象),创建对象这个过程有点麻烦,所以在jsp中提供了一些内置对象,用来实现很多jsp应用.在使用内置对象时 ...

  2. JSP内置对象-request

    JSP内置对象即无需声明就可以直接使用的对象实例,在实际的开发过程中,比较常用的JSP对象有request,response,session,out和application等,笔者在本文章中将简单介绍 ...

  3. JSP内置对象——out对象/request对象

    在这个科技高速发展的时代,迫使我们的脚步一刻都不能停下. 在这个for循环语句当中,我们可以直接使用jsp内置对象中的out对象来给浏览器打印输出,那么这个out对象就是一个内置对象, 在这里,我们使 ...

  4. JavaWeb——JSP内置对象request,response,重定向与转发 学习总结

    什么是JSP内置对象 九大内置对象 requestJSP内置对象 request对象常用方法 request练习 responseJSP内置对象 response练习 response与request ...

  5. JSP内置对象——request对象

    request对象request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息.系统信息.请求方式和请求参数等. 通过request对象提供的各种方法可以处理客户端浏览器提交的 ...

  6. jsp内置对象浅谈

    jsp内置对象浅谈 | 浏览:1184 | 更新:2013-12-11 16:01 JSP内置对象:我们在使用JSP进行页面编程时可以直接使用而不需自己创建的一些Web容器已为用户创建好的JSP内置对 ...

  7. JSP内置对象有哪些呢?

    内置对象 request request 对象是 javax.servlet.httpServletRequest类型的对象. 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的 ...

  8. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

随机推荐

  1. 安卓模拟器bluestack 换imei

    有好多种方法,下面介绍2种   第一种方法   通过靠谱助手设置,非常简单.   第二种方法   1.解压 root_20121221文件夹,将Root.fs 覆盖到 win7路径:C:\Progra ...

  2. HANA Studio打开系统显示Secure storage is locked

    之前一直用着好好的,今天打开HANA Studio突然发现一个系统都不在了: 提示:‘Secure storage is locked’ 我点旁边的Unlocked没有任何反应,右键也没有功能了.如下 ...

  3. MongoDB 基础命令行

    本文专门介绍MongoDB的命令行操作.其实,这些操作在MongoDB官网提供的Quick Reference上都有,但是英文的,为了方便,这里将其稍微整理下,方便查阅. 登录和退出 mongo命令直 ...

  4. 下载最新Android代码的方法

    之前我是去Android官方网站下载最新Android代码,但是这种方法需要FQ,而且有时候FQ又不太方便,今天我发现一个不错的网站,是清华大学搞的,跟Android官方的代码基本保持同步,而且下载方 ...

  5. 使用Html5+C#+微信 开发移动端游戏详细教程 :(一)序(关于作者创业失败的感想)

    说起梦想,我清楚的记得2012年7月初毕业,拿到毕业证书的那天果断买好了次日南下去深圳的绿皮火车票,500多块,26个小时车程.第二天就拖上行李到了深圳. 一开始的想法仅仅是过去想见见世面,学习点新技 ...

  6. Android 定时器

    Andorid定时器封装类 public class TimerUtil { private static final String TAG = "TimerUtil"; priv ...

  7. springMVC中Dispatcher中的/和/*的区别

    1. 首先 / 这个是表示默认的路径,及表示:当没有找到可以匹配的URL就用这个URL去匹配.2. 在springmvc中可以配置多个DispatcherServlet,比如: 配置多个Dispatc ...

  8. C#创建自定义配置节

    在.Net应用程序中,我们经常看到VS为我们生成的项目工程中都会含有nfig或者nfig这样的文件.这个文件就是我们所说的应用程序配置文件.在这个文件里面记述着一些与我们的应用程序相关的信息,如:数据 ...

  9. BI之SSAS完整实战教程1 -- 开篇, BI简介 & SSAS简介

    文章提纲 商业智能(BI, Business Intelligence)基本概念 SSAS(SQL Server Analysis Services)相关工具(开发.管理和客户端) 总结 一.商业智能 ...

  10. 【C#进阶系列】00 序

    老早就被各种推荐<CLR via C#>这本书了,然而一直没去学. 因为工作中所需要的.NET功底目前算是足以应付了,而前端却不熟,所以跑去学了一段时间前端的知识. 终于算是把前端方面的基 ...