1.Request(HttpRequestServlet)对象
request(HttpRequestServlet) 当前页面存在,服务器跳转存在,客户端不存在客户端的请求信息被封装在request对象中,通过它才可以了解到客户的需求,然后做出响应 ,它是HttpRequestServlet类的实例,request对象具有请求域,即完成客户端的请求之前,
该对象一直有效。常用方法如下:
String getRequestURl( )获取请求链接地址的相对路径
String getRequestURL( ).toString( ); 请求链接地址的完整路径
String getParameter(String name) 返回name指定参数的参数值
String[ ] getParameterValues(String name) 返回包含参数name的所有值的数组
void setAttribute( String ,Object) 存储此请求中的属性
Object getAttribute(String name) 返回指定属性的属性值
int getContentLength( )获取浏览器文本的大小
String getContentType( )得到请求体的mime类型
String getProtocol( )返回请求用的协议类型和版本号
String getSererName( ) 返回接受请求的服务器主机名
Sting getRemoteAddr( )返回客户端IP地址
String getRealPath 得到真实路径
eg:
请求体的mime类型:
<%=
request.getContentType()
%>
<
br
>
协议类型及版本号:
<%=
request.getProtocol()
%>
<
br
>
服务器主机名:
<%=
request.getParameterNames()
%>
<
br
>
服务器端口号:
<%=
request.getServerPort()
%>
<
br
>
请求客户端的Ip地址:
<%=
request.getRemoteAddr()
%>
<
br
>
eg.
<
body
> requests.jsp
<
h1
>
用户注册
</
h1
>
<
hr
>
<
form
action
=
"request.jsp"
name
=
"regForm"
method
=
"POST"
>
<
table
>
<
tr
>
<
td
>
用户名:
</
td
>
<
td
><
input
type
=
"text"
name
=
"username"
></
td
>
</
tr
>
<
tr
>
<
td
>
爱好:
</
td
>
<
td
>
<
input
type
=
"checkbox"
name
=
"favorite"
value
=
"read"
>
读书 //checkbox:复选框
<
input
type
=
"checkbox"
name
=
"favorite"
value
=
"music"
>
音乐
<
input
type
=
"checkbox"
name
=
"favorite"
value
=
"moive"
>
电影
<
input
type
=
"checkbox"
name
=
"favorite"
value
=
"internet"
>
上网
</
td
>
</
tr>
<
tr
>
<
td
colspan
=
"2"
><
input
type
=
"submit"
value
=
"提交"
></
td
>
</
tr
>
</
table
>
</
form
>
</
body
>
request.jsp
<
body
>
<
h1
>
request内置对象
</
h1
>
<%
request.setCharacterEncoding(
"UTF-8"
);
%>
//解决中文乱码问题
用户名:
<%=
request.getParameter(
"username"
)
%>
<
br
>
爱好:
<%
String[] favorites=request.getParameterValues(
"favorite"
);
for
(
int
i=0;i<favorites.length;i++){
out.println(favorites[i]+
" "
); //
空格
}
%>
</
body
>
解决URL传参中中文乱码问题,在tomcat服务器中conf目录下server.xml文件中找到添加
URIEncoding="utf-8"
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout=“20000"
redirectPort="8443" URIEncoding="utf-8”/>
2.Response对象
response对象包含了响应客户请求的有关信息,但在jsp中很少直接用到它,它是HttpServletResponse类的实例,response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效
常用方法:
一.PrintWriter getWriter( )返回可以客户端输出字符的一个对象 Java.io,*
二.setContentType(String type)设置响应的mime类型
out.println("response内置对象");
PrintWriter outer=response.getWriter( );
//获得输出流对象
outer.println("大家好"); //会提前在内置的out对象前打印
response.sendRedirect( "reg.jsp"); //请求重定向 (无法共享转发的页中数据)
redirect能重定向到当前应用程序,而且还能重定向到同一个站点上其他应用程序的资源,甚至使用绝对的url重定向到其他站点资源.比如可以通过该方法跳转到Google页面
<jsp:forword page=""></jsp:forword>//JSP动作指令 forward属于服务器端请求资源,服务器直接访问
目标地址,并对目标地址响应内容进行读取,在把读取内容发给浏览器,客户端浏览器的地址不变.
请求重定向: 客户端行为,
response.sendRedirect( )从本质上讲等同于2次请求,前一次的请求对象不会保存,地址栏的URL地址
会改变
重定向:你先去了A局,A局的人说:“这事不归我们管,去B局”,然后,你就从A局退出来自己乘车去了B局。(进行页面跳转)
请求转发:服务器行为 request.getRequestDispatcher( ).forward(request,response);是一次请求转发后请求对象会保存,地址栏的URL地址
不会改变。
转发;你先去了A局,A局的人看了以后,知道这个事情其实应该B局来管,但他没有把你退出来,而
是让你坐一会,自己到后面办公室联系了B的人,他他们办好后,送了过来。
99%业务都是用转发
重定向 登陆页面跳出比如 : 登陆退出——重定向到首页
ajax—— 无状态刷新