day05—html之JSP&Servlet进阶

1、Servlet
    提供基于协议的请求/响应服务的java应用程序,可以生成动态的WEB页面

    Servlet本质就是动态产生网页程序的技术


2、Servlet的功用:
    读取客户程序发送来的显式数据(表单数据)或隐式数据(请求报头)
    生成相应的结果

    送显式的数据(HTML)或隐式的数据(状态代码和响应报头)给客户程序 


3、Servlet的生命周期:
    加载、实例化、初始化、处理请求、服务结束
1).servlet容器(Myeclipse等)加载servlet,完成servlet的实例化
2).容器运行servlet实力的init()方法初始化。
3).服务请求到达,调用service()方法,自动运行请求对应的doPost()、doGet()方法处理
4).服务器销毁时,调用destory()方法。

ps:在Servlet中定义成员变量;使用时一定要注意:
根据Servlet的生命周期,一个Servlet在web应用只有一个实例,这个实例被多个线程共享。
即定义成员变量,多用户共享此变量。用户需要自己的局部变量时(例如用户的姓名、密码等),需要在局部中定义。


4、HttpServlet方法:getServletContext()  //获取Servlet上下文即Servlet环境
可以使用此方法统计网站浏览人数。


5、Servlet过滤器:
实现对信息的筛选。通过配置由容器控制所有请求在到达Servlet之前先通过过滤器检查。
编写过滤器遵循下列步骤:
1、编写一个实现了Filter接口的类
2、实现Filter接口的三个方法,过滤逻辑在doFilter方法中实现
3、在web程序中注册过滤器
4、把过滤器和Web应用一起打包部署
ps:在web.xml中注册过滤器,过滤器的路径<url-pattern>需要与Servlet路径一致,表示对这个路径的Servlet的请求都要过滤。


6、重定向
重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置。
网站建设中,时常会遇到需要网页重定向的情况:
1.网站调整(如改变网页目录结构);

2.网页被移到一个新地址;

3.网页扩展名改变(如应用需要把.php改成.Html或.shtml)。

这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;
再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。

代码:response.sendRedirect(String url);
注意,该段代码后面如果还有其他代码的话也会被继续执行的。

7、转发
在Web服务器端处理用户请求的时候,会有需要多个Web组件配合才能完成的情况。一个Web组件(Servlet/JSP)将未完成的处理通过容器

转交给另外一个web组件继续完成,这个转交的过程叫做转发。

常见情况是Servlet负责获取数据,然后将数据转交给JSP进行展现。

转发实现代码:
步骤一、绑定数据到request对象
request.setAttribute(String name,Object obj);
步骤二、获得转发器
RequestDispatcher rd = request.getRequestDispatcher(String uri);
步骤三、实现转发
rd.forward(request,response);
这样就可以实现携带数据转发,在目标页面可以对数据进行处理。

8、转发与重定向的区别
(1)、转发的目的地只能是同一个应用内部的各个组件之间,而重定向的目的地是任意的(跳转到百度等等)。  
如果想实现组件之间的跳转,如果是同一个应用的内部,应该用转发(因为效率更高)。 
如果组件之间要共享request对象,也应该用转发。  
(2)、浏览器地址的地址:转发是不变的,而重定向是变的。(浏览器发送一/两次请求)  
(3)、转发的各个组件可以共享request对象,而重定向不行。  
(4)、转发是一件事情未做完,而重定向是一件事情已经做完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值