简简单单---- (四)jsp内置对象request
我们在做javaweb开发的时候经常会用到jsp的内置对象, 会用到一些常用的内置对象的方法, 对此, 本文总结一下常用内置对象的常用方法.
request对象:使用场合:
当我们的系统被用户使用的时候,就需要从用户那得到用户的需求, 而根据用户的需求生成一个用户可以看到结果的页面,就这样实现了系统与用户的交互。在web中,用户的需求被抽象成为一个request对象,这个对象的“身上”包括用户的需求。例如我们通常通过表单提交数据,通过url方式传递参数,这就是用户的需求,request就是用来收集类似这些用户的输入数据和参数。
同时,request对象中还包括一些服务器端口信息,例如端口,真实路径,访问协议等信息。通过request对象可以访问服务器这些信息。
reuqeust对象的主要方法:getAttribute(String name)
setAttribute(String name,Object o)
移除指定名称的一个属性
返回客户端机器的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例子
<%@ 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了嘻嘻