一 请求重定向与请求转发的区别
二 生活小案例
三 请求转发实例(reg.jsp->response.jsp->request.jsp)
1、reg.jsp
<%@
page
language
=
"java"
import
=
"java.util.*"
contentType
=
"text/html; charset=utf-8"
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+
"://"
+request.getServerName()+
":"
+request.getServerPort()+path+
"/"
;
%>
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
<
html
>
<
head
>
<
base
href
=
"
<%=
basePath
%>
"
>
<
title
>
My JSP 'index.jsp' starting page
</
title
>
<
meta
http-equiv
=
"pragma"
content
=
"no-cache"
>
<
meta
http-equiv
=
"cache-control"
content
=
"no-cache"
>
<
meta
http-equiv
=
"expires"
content
=
"0"
>
<
meta
http-equiv
=
"keywords"
content
=
"keyword1,keyword2,keyword3"
>
<
meta
http-equiv
=
"description"
content
=
"This is my page"
>
<!--
<link
rel
="
stylesheet
" type="text/
css
"
href
="styles.css">
-->
</
head
>
<
body
>
<
h1
>
用户注册
</
h1
>
<
hr
>
<%
int
number=-1;
//说明用户第一次访问页面,计数器对象还未创建
if
(application.getAttribute(
"counter"
)==
null
)
{
application.setAttribute(
"counter"
, 0);
}
number = Integer.parseInt(application.getAttribute(
"counter"
).toString());
number++;
application.setAttribute(
"counter"
, number);
%>
<!-- <form name="regForm" action="request.jsp" method="post"> -->
<
form
name
=
"regForm"
action
=
"response.jsp"
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"
>
读书
<
input
type
=
"checkbox"
name
=
"favorite"
value
=
"music"
>
音乐
<
input
type
=
"checkbox"
name
=
"favorite"
value
=
"movie"
>
电影
<
input
type
=
"checkbox"
name
=
"favorite"
value
=
"internet"
>
上网
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
><
input
type
=
"submit"
value
=
"提交"
/></
td
>
</
tr
>
</
table
>
</
form
>
<
br
>
<
br
>
<
a
href
=
"request.jsp?username=李四"
>
测试URL传参数
</
a
>
<
br
>
<
br
>
<
center
>
您是第
<%=
number
%>
位访问本页面的用户。
</
center
>
</
body
>
</
html
>
2、response.jsp
<%@
page
language
=
"java"
import
=
"java.util.*,java.io.*"
contentType
=
"text/html; charset=utf-8"
%>
<%
response.setContentType(
"text/html;charset=utf-8"
);
//设置响应的MIMI类型
out.println(
"<h1>response内置对象</h1>"
);
out.println(
"<hr>"
);
//out.flush(); //解决PrintWrite对象的浏览器输出总是先于out对象输出这一问题
PrintWriter outer = response.getWriter();
//获得输出流对象
outer.println(
"大家好,我是response对象生成的输出流outer对象"
);
//response.sendRedirect("reg.jsp");//请求重定向
//请求重定向
//response.sendRedirect("request.jsp");
//请求转发
request.getRequestDispatcher(
"request.jsp"
).forward(request, response);
%>
3、request
.jsp
<%@
page
language
=
"java"
import
=
"java.util.*"
contentType
=
"text/html; charset=utf-8"
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+
"://"
+request.getServerName()+
":"
+request.getServerPort()+path+
"/"
;
%>
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
<
html
>
<
head
>
<
base
href
=
"
<%=
basePath
%>
"
>
<
title
>
My JSP 'index.jsp' starting page
</
title
>
<
meta
http-equiv
=
"pragma"
content
=
"no-cache"
>
<
meta
http-equiv
=
"cache-control"
content
=
"no-cache"
>
<
meta
http-equiv
=
"expires"
content
=
"0"
>
<
meta
http-equiv
=
"keywords"
content
=
"keyword1,keyword2,keyword3"
>
<
meta
http-equiv
=
"description"
content
=
"This is my page"
>
<!--
<link
rel
="
stylesheet
" type="text/
css
"
href
="styles.css">
-->
</
head
>
<
body
>
<
h1
>
request内置对象
</
h1
>
<%
request.setCharacterEncoding(
"utf-8"
);
//解决中文乱码问题,无法解决URL传递中文出现的乱码问题。
request.setAttribute(
"password"
,
"123456"
);
%>
用户名:
<%=
request.getParameter(
"username"
)
%>
<
br
>
爱好 :
<%
if
(request.getParameterValues(
"favorite"
)!=
null
)
{
String[] favorites = request.getParameterValues(
"favorite"
);
for
(
int
i=0;i<favorites.length;i++)
{
out.println(favorites[i]+
" "
);
}
}
%>
<
br
>
密码:
<%=
request.getAttribute(
"password"
)
%>
<
br
>
请求体的MIME类型:
<%=
request.getContentType()
%>
<
br
>
协议类型及版本号:
<%=
request.getProtocol()
%>
<
br
>
服务器主机名 :
<%=
request.getServerName()
%>
<
br
>
服务器端口号:
<%=
request.getServerPort()
%>
<
BR
>
请求文件的长度 :
<%=
request.getContentLength()
%>
<
BR
>
请求客户端的IP地址:
<%=
request.getRemoteAddr()
%>
<
BR
>
请求的真实路径:
<%=
request.
getRealPath(
"request.jsp"
)
%>
<
br
>
请求的上下文路径:
<%=
request.getContextPath()
%>
<
BR
>
</
body
>
</
html
>
四 运行结果