简简单单---- (四)jsp内置对象request

我们在做javaweb开发的时候经常会用到jsp的内置对象, 会用到一些常用的内置对象的方法, 对此, 本文总结一下常用内置对象的常用方法.

request对象:

使用场合:

当我们的系统被用户使用的时候,就需要从用户那得到用户的需求, 而根据用户的需求生成一个用户可以看到结果的页面,就这样实现了系统与用户的交互。在web中,用户的需求被抽象成为一个request对象,这个对象的“身上”包括用户的需求。例如我们通常通过表单提交数据,通过url方式传递参数,这就是用户的需求,request就是用来收集类似这些用户的输入数据和参数。

同时,request对象中还包括一些服务器端口信息,例如端口,真实路径,访问协议等信息。通过request对象可以访问服务器这些信息。

reuqeust对象的主要方法:

request对象主要方法方法的作用

getAttribute(String name)

setAttribute(String name,Object o)

可以取出指定名称的属性值. 需要用setAttribute(String name,Object o)对这个方法进行赋值.
getContextpath()获取服务器上上下文的路径
getCookies()这个方法取出客户端的cookies
getHeader(String name)取出指定的Http包头的属性值.
getParameter(String name)取出客户单提交到服务器的参数(经常被用到)
getServerName()取得服务器的名称
getServerPort()取得服务器端口号
removeAttribute(String name)

移除指定名称的一个属性

getRemoteAddr()

返回客户端机器的IP地址.

request.getContextpath():

这个属性也经常被用到,如果查看api文档,你很快就能明白,他是用于取得根目录的。

例如我们的页面完整的链接路径为:http://localhost:80/JavaWeb/User/login

request.getContextPath(): 返回的是 /JavaWeb -------根目录名称
request.getSchema(): 返回的是 http ----------使用的协议
request.getServerName(): 返回的是 localhost --------服务器名字
request.getServerPort(): 返回的是 80 -------端口号

我们一般这样使用:

String path = request.getContextPath();
	//默认成为根了.
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";


配合jsp的base标签 :<base href="<%=basePath%>"> 这样来解决相对路径中层次太多的问题。

再说说getAttribute和getParameter()用法的区别,我们经常会用到.

理解了一下,可以这样理解,很简单。

request.getAttribute(string name);

getAttribute就像是如果你去外企公司工作,有的公司会给你起一个英文的名字,当你发工资的时候就会找你的英文的名字,通

过这个英文名字,得到你整个人的信息。在这个过程中,可以把你请求发工资看做是一次request请求,你传递给公司一个英文名

字,(request.setAttribute("love", ZHANG) ),公司就通过这个英文名字找到你((ZHANG)request.getAttribute("love") ) ,当然同时已经

给你的银行卡属性赋值啦(打钱啦)。 在这个过程公司可以看做是服务端,你可以看做是客户端,这就是setAttribute和getAttribute

了。

我们看到了,在使用getAttribute属性的时候,必须在一次请求的过程中,前面已经通过setAttribute属性给这个对象起了一个“名

字”了,这样才能去得到,否则为null值。

request.getParameter(String name);

而getParameter在一个request请求过程中,请求的是表单或者URL字符串相对应的值。就相当于,你request,公司发工资给

你,你request的时候一定会把银行卡号也提交上去,这让可以让财务部得到你的卡号,再返回给你了。

比较request.getParameterrequest.getAttribute
生命周期一次请求过后消失一次请求过后消失
返回值类型返回是字符串类型返回是一个对象类型,一般需要进行强制转换
取得的东西

取得的是表单中 一个对象名字的value值。

或者是通过URL传递过来的字符串的值。

取得一次请求,给对象取名,取得这个对象。
重定向

客户端重定向时,点击链接或提交按钮

服务器端重定向,在servlet中使用了forward

例如我们的test1.java文件中,我们设置Model对象,同时通过转发到我们的item_maint.jsp页面。代码如下:

//设置参数.
		request.setAttribute("pageModel", pageModel);
		
		//转到.
		request.getRequestDispatcher("/basedata/item_maint.jsp").forward(request, response);


我们的item_maint.jsp页面:

//得到服务器端设置的对象。
	PageModel pageModel = (PageModel) request.getAttribute("pageModel");



getParameter例子

request获取表单中的数据:
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!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=GB18030">
<title>request获取表单提交的数据</title>
</head>
<body>
下面是表单的内容:
	<form>
		用户名:<input type="text" name="userName" size="10"/>
		密    码:<input type="password" name="password" size="10"/>
		<input type="submit" value="提交">
		
	</form>
	下面是表单提交后通过request取得的到的表单数据。
	<%
		out.println("表单输入的用userName为" +request.getParameter("userName"));
		out.println("表单输入的用户密码为" + request.getParameter("password")); 
	 %>

</body>
</html>


显示:

当然也可以是从另一个页面取得表单的值,就需要在另一个页面写方法了。

通过截取URL字符串获得值:

例如下面的jsp文件:

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!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=GB18030">
<title>request获取url传递的字符串值。</title>
</head>
<%
	// 获取客户端提交的参数。
	String paramString = request.getParameter("param");
	 %>
<body>
	<a href="testFile.jsp?param=Hello">单击链接</a>
	您提交的参数为:<%=paramString %>
</body>
</html>


结果:

虽然是看似简单的小应用,却贯彻我们java web开发始终,这也是为什么jsp作为j2ee一个标准,成为j2ee开发不可或缺的一部分。虽然有API文档,随时可以查阅,但是一些常用的我们理解了就更容易上手了。加油!越来越喜欢java了嘻嘻

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值