javaee 简介

来源:互联网 发布:c语言用户标识符 编辑:程序博客网 时间:2024/06/08 10:14

Servlet是sun官方制定的使用java制作web程序的规范。

而jsp是封装过的servlet。

①     Servlet继承自HttpServlet

②     重写doGetdoPost方法

Servlet生命周期

①实例化

Init()只访问一次,在第一次加载servlet的时候使用

<load-on-startup></load-on-startup>

中间加一个数字,服务器启动就运行

Service()

Destroy()

⑤销毁实例并标记为垃圾收集

 

重点要理解的是:servlet是由容器创建的,由我们的init方法初始化的。

HttpServlet继承的其中一个借口是serlvetConfig包含了所有的配置信息

传入的这个对象有两个方法,getInitParameter,getServletName

Request对象是请求的意思,封装了客户端请求信息

Response对象是回应的意思。

访问服务器有三种方式,第一通过超链接,第二通过地址栏直接访问,第三个通过formaction访问。

request.getParameter("");

这句很关键,客户端请求参数的名称

客户端只要有此请求参数,即便没有值也返回空字符串,如果没有此请求参数,返回null

注意如果是多选用request.getParametervalues("");得到的是一个string数组

这个时候如果一个都没选,会出空指针一场,所以必须有一个判断。

接下来是我学习编程12个月都没弄明白的转发和重定向,希望这一次弄明白它。

serlvet来说,如果一个请求需要两个serlvet完成,怎么样从第一个servlet到第二个servlet,有两种方式:请求转发和重定向。

Request有两个部分一个部分是parameter,另一个部分是attribute.

Parameter中式客户端发送的数据,服务器端是不能改的。

Attribute是服务器端servlet可以改动的参数。

请求转发,parameterattribute都不会消失。

 

再来说一下web应用程序的流程,服务器会先去web.xml里面找配置信息,匹配某一个servlet-mapping中的url-pattern,然后加载servlet。前期还做了一件事情,把请求参数和其他信息封装为requestresponse

 

request.setAttribute(name, o);

第一个放string第二个放object,也就是说什么都可以放的是一个map

request.getRequestDispatcher(path);

这个用来请求转发,相当于一个中间对象Dispatch转发的意思

rd.forward(request, response);

转发器带着两个对象走去新的servlet

在发送到的servlet中可以用request.getAttributename)得到这个值。

终于知道请求转发是什么东西了,request内有两个对象,一个parameter一个attribute

Parameter是客户端的参数,服务器端一般是不能改的。

attribute是服务器端可用参数,服务器端可以增删改。

Attribute是一个map,键是String,值是Object

可以用setAttributegetAttributeremoveAttribute

在请求转发中实际是用了一个dispacher来把attribute传给另一个servlet运行,

太好了,知道其实质就好。

 

哈哈,下面怀着激动的心情学习重定向

response.sendRedirect();

这个不但attribute没有parameter也丢失了。

第二个servlet拿到的是新的requestresponse

所以最通俗的请求转发和重定向的区别是

请求转发数据还在,而重定向数据丢失了,而且重定向不需要dispacher的支持。

第二个区别,请求转发地址栏url不变,重定向地址栏改变。

第三个区别,请求转发不需要加webapp名称,重定向要么加,要么去掉前面的“/,使用相对路径。

第四:请求转发只能在一个应用程序之间转发,而重定向可以定向到不同web应用程序之间,因为他不发数据,比如可以从一个网站重定向到另一个网站,但重定向其实也是可以传递数据的。

直接写到地址栏,创建一个新的reuqest

第五:请求转发与前面的调用类别相同,而重定向全部变为get请求。
0 0
原创粉丝点击