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中,有接收的页面和发送的页面

接收的页面链接写成伪路径即可

 

posted on 2015-09-24 10:03  菜鸟乙  阅读(188)  评论(0)    收藏  举报