昨晚,写了这一段中遇到的一些事,而且,其中有些问题和知识点没有详细的说明,“继往开来”的再一次提笔。
一些知识的理解:
servlet的作用:首先,我们应该了解什么是servlet(是使用Java serlvet应用程序设计接口(API)及相关类和方法的Java 程序,是一种服务器端的java应用程序,用于创建web动态页面)Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:
1、客户端发送请求至服务器端;
2、服务器将请求信息发送至Servlet
3、Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求
4、服务器将响应返回给客户端
servlet中doGet,doPost,service的方法:
doGet,doPost对应的是客户端发起的get和post请求,而service能解决所有的类型的请求,到这里不得不说说get和post的区别:1、在浏览器中的地址栏显示的内容的不同-----post请求的参数不会在浏览器上显示,2、所能发送数据大小不一样------post所能发送的数据可以无限大
servlet请求转发的三种方法的区别:
1、include:包含转发其中包含了servlet和html,地址栏不改变,在服务器中完成
2、forward:地址栏也不改变,也在服务器中完成,但是转发的是url中的内容
3、sendRedirect:重定向发送,前两种是在服务端做的重定向,而sendRedirect是在客户端做的重定向
2和3的区别(参考于:http://www.javawind.net/5b016f381b62cd71011b6d11c9580125.jhtml)
1、forward重定向是在容器内部实现的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变,而sendRedirect方法可以重定向到任何URL, 因为这种方法是修改http头来实现的,URL没什么限制,重定向后浏览器地址栏URL改变。
2、forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例,而采用sendRedirect方式两者不是同一个application。
3、基于第二点,参数的传递方式不一样。forward的form参数跟着传递,所以在第二个实例中可以取得HTTP请求的参数。sendRedirect只能通过链接传递参数,response.sendRedirect(“login.jsp?param1=a”)。
4、sendRedirect能够处理相对URL,自动把它们转换成绝对URL,如果地址是相对的,没有一个‘/’,那么Web container就认为它是相对于当前的请求URI的。比如,如果为response.sendRedirect("login.jsp"),则会从当前servlet 的URL路径下找login.jsp: http://10.1.18.8:8081/dms/servlet/Servlet 重定向的URL: http://10.1.18.8:8081/dms/servlet/login.jsp,如果为response.sendRedirect("/login.jsp")则会从当前应用径下查找url:http://10.1.18.8:8081/login.jsp。而forward不能这样处理相对路径。
session和request这两种存储数据的方式的区别:
在做博客小项目的时候,在保存对象和数据的时候这个很重要。比如,再登陆成功后,将用户存放到session中,文章和评论发表成功后,将他们放在request中。在后面删除文章和删除评论的时候,可以得到对应的ID,而这两种的区别是什么呢?
1、生命周期不一样:request只在一个请求应答中有效,session只要浏览器不关闭就存在
2、对象不一样:reque转发请求时共享数据,session存放用户的相关数据对象