jee复习----servlet

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

而jsp是封装过的servlet。

①     Servlet继承自HttpServlet

②     重写doGet,doPost方法

Servlet生命周期

①实例化

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

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

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

③Service()

④Destroy()

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

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

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

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

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

Response对象是回应的意思。

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

request.getParameter("");

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

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

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

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

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

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

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

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

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

请求转发,parameter和attribute都不会消失。

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

request.setAttribute(name, o);

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

request.getRequestDispatcher(path);

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

rd.forward(request, response);

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

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

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

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

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

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

可以用setAttribute,getAttribute,removeAttribute。

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

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

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

response.sendRedirect();

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

第二个servlet拿到的是新的request和response。

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值