request
-
2023年4月27日发(作者:沁园春长沙原文全文)
HttpServletRequest对象详解:
该对象表示浏览器的请求(http请求),当web服务器得到该请求后,会把这些请求
信息封装成一个httpservletrequest对象,开发人员通过这个对象的方法,可以得到这
些信息
URL和uri的区别
url=http://localhost:8080/servletrequest/getinfo//完整的路径
uri=/servletrequest/getinfo//web名称加上资源名称
ryString():该函数可以获得请求部分的数据(参数和值)
例如:http://localhost:8080/web名?username=yyl&pwd=123
, ryString()就会得到username=yyl&pwd=123
练习:
补充:当我们下载文件的时候,可能提示框是中文乱码
String temp=oder.encode("传奇.mp3", "utf-8");//资源名中文名解决方案
der("Content-Disposition",
"attachment;filename="+temp);
path=this.getServletContext().getRealPath("/source/传奇.mp3");
1. 获得客户机请求头
getHeader方法
getHeaderNames:获得所有请求的消息头
2. 获得客户机请求参数
a) getParameter方法
b) getParameterValues(String name)
c) getParameterNames方法
例题:
界面显示代码:
n("");
逻辑处理代码:
tentType("text/html;charset=utf-8");//设置浏览器显示为中文
racterEncoding("utf-8");//设置post接收的编码为中文
PrintWriter out = ter();
String u=ameter("username");
String p=ameter("password");//里面的全是name
String sex=ameter("sex");
String city=ameter("city");
String intro=ameter("intro");
String hidden=ameter("hidden1");
//如果接收复选框的内容,则使用getparametervalues方法
String hobby[]=ameterValues("hobby");
n("u="+u+"");
n("p="+p+"");
n("sex="+sex+"");
if(hobby!=null){
for(String s:hobby){
n("hobby="+s+"");
}
}else{
n("你没有爱好");
}
n("city="+city);
n("你的介绍:"+intro);
n("隐藏控件传递的数据是:"+hidden);
3. 请求转发
现在使用request提供的转发的方法,实现上次使用direct()的效果
ribute("user", u);
//表示使用转发的方法,把request和response对象传递给下一个servlet对象
uestDispatcher("(/requestforward)/servlet2").forward(request,
response);
a) 使用forward不能转发到该web应用之外的url
b) 因为forward是发生在服务器的,不是在浏览器,所以servlet1和servlet2使用的是同一
个resquest和response
c) 使用sendredirect()方法不能够通过ribute把属性传递给下一个
servlet
面试题:请问sendredirect和forward的区别是什么
答:1.叫法不一样,前一个叫重定向,转发,后一个叫转向
2.实际发生的位置不一样:前一个发生在浏览器端,后一个发生在服务器端
3.用法不一样
direct(“/web应用/资源URL”);
uestDispatcher(“/资源URL”).forward(request,response);
4. 能去的范围不一样,前一个可以去任何URL,后一个只能去当前的web应用资源
什么是一次http请求
只要没有停止,同时没有回到浏览器重定向,就算一次
如果转向多次,我们的浏览器地址栏保留的是第一次转向的那个servlet的URL
-
request