1 Servlet传值
1.1 转发与重定向的区别
转发是肖俊娟送给我一个U盘,我把U盘送给了李海林
重定向是肖俊娟送给了我一个U盘,我又重新买了一个U盘送给了李海林(U盘里的数据肯定不一样,即url地址不一样)
表单提交是重定向
1.2 转发与重定向的使用场景
在传数组和map、list等的时候用转发,
在传单个值或不传值的时候用重定向
一般用重定向,不能用重定向的时候用转发
转发根路径应用有两个地方:
1 在urlpatterns中,是转发,所有在web.xml中的是转发
2 在转发中,即RequestDispatcher getRequestDispatcher(String path).forward(req,resp);
其余的都是转发根路径的应用
例如:add.jsp跳转到NewsAdd.java
(例子可以作为模板)
add.jsp中
<form action="/(项目名)/manage/NewsAdd">
上边是重定向,
注意,一般NewsAdd不要写jsp或者action类的,文件夹太多,很容易乱
NewsAdd.jsva中
@WebServlet(urlPatterns="/manage/NewsAdd")
上边的是转发,不需要写项目名
1.3 转发与重定向的用法
重定向:举例:
public void response.sendRedirect(String location)
throws IOException
resp.sendRedirect("/wedding/houtai/News/index.jsp");
转发:举例:
req.getRequestDispatcher("/houtai/News/index.jsp").forward(req, resp);
urlPatterns="/action/NewsListAction"
1.4 转发重定向的根路径问题
1转发与重定向
①最前边是否有“/”,没有代表同级目录下寻找
②,有“/”,代表在根路径下寻找
转发的根路径包含项目名,重定向不包含项目名
2 几个路径相关函数的返回值:
在TestURL.jsp文件中测试了三个路径相关函数,这三个函数都是request的方法。
1. getRequestURI()
2. getContextPath()得到项目名
3. getServletPath()
结果如图3所示:

图3
1.5 request获得属性
在小脚本内写下如下代码
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
out.println(path);
out.println(request.getScheme());
out.println(request.getServerName());
out.println(request.getServerPort());
%>
<base href="<%=basePath%>">
<%
out.println(basePath);
%>
打印结果如下
/divisionScope http localhost 8080 http://localhost:8080/divisionScope/
得到如下结论:
request.getContextPath()---项目名
request.getScheme()--------协议名
request.getServerName()---服务器名
request.getServerPort()-----端口名
bathPath----------------------相当于转发
1.6 servlet和jsp存值和取值的方式
在servlet和jsp中存值和取值的方式由两种
1种是setAttribute和getAttribute
2种是c:forEach
1.7 servlet中 urlpatterns的使用条件
1必须是javaee6或者以上版本的
urlpattern是虚拟路径的简写形式,javaee5或者以前的版本是全写但太麻烦
1.8 页面传值需要注意问题
页面之间传值需要注意的问题
今天认识到自己的一个错误,
如果从一个页面传值到另一个页面,
前边页面用request,后边页面也要用request得到
类似的,response、pageContext、session、application依次对应
一般传值我们用request请求,因为它比较简单,response比较麻烦
1.9 servlet中urlpatterns注意事项
在servlet中,
@WebServlet(urlPatterns="/newsAdd")接收
resp.sendRedirect("/wedding/houtai/News/index.jsp");转发
上边的urlpatterns不能写成后缀名为jsp的格式,
在servlet中,有接收的页面和发送的页面
接收的页面链接写成伪路径即可
浙公网安备 33010602011771号