Servlet是由SUN公司提供的一门动态Web资源开发技术。
Servlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的做用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中一般须要:html
public interface Servlet { public void init(ServletConfig config) throws ServletException; public ServletConfig getServletConfig(); public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; public String getServletInfo(); public void destroy(); }
public class HelloServlet implements Servlet { public void init(ServletConfig config) throws ServletException {} public ServletConfig getServletConfig() {return null;} public void destroy() {} public String getServletInfo() {return null;} public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("hello servlet!"); } }
<servlet> <servlet-name>hello</servlet-name> <servlet-class>cn.itcast.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping>
一、实例化 在第一次访问servlet的时候建立servlet对象,只调用一次。证实servlet对象在Tomcat中是单例。
二、初始化init()方法 建立完servlet对象的时候调用,只调用1次。
三、服务service()方法 每次发出请求是调用。调用N次
四、销毁 destroy()方法 销毁servlet对象的时候调用,中止服务器或者从新部署web应用时销毁servlet对象。只调用一次。java
HttpServlet类是GenericServlet的子类,它提供了对HTTP请求的特殊支持,因此一般咱们都会经过继承HttpServlet来完成自定义的Servlet。web
ServletRequest和ServletResponse是Servlet#service() 方法的两个参数,一个是请求对象,一个是响应对象,能够从ServletRequest对象中获取请求数据,可使用ServletResponse对象完成响应。你之后会发现,这两个对象就像是一对恩爱的夫妻,永远不分离,老是成对出现。
ServletRequest和ServletResponse的实例由服务器建立,而后传递给service()方法。若是在service() 方法中但愿使用HTTP相关的功能,那么能够把ServletRequest和ServletResponse强转成HttpServletRequest和HttpServletResponse。这也说明咱们常常须要在service()方法中对ServletRequest和ServletResponse进行强转,这是很心烦的事情。不事后面会有一个类来帮咱们解决这一问题的。浏览器
GenericServlet是Servlet接口的实现类,咱们能够经过继承GenericServlet来编写本身的Servlet。
服务器
response.getWriter().print(“<h1>Hello JavaWeb!</h1>”);
setCharacterEncoding(“utf-8”);
以后,再response.getWriter()获取字符响应流对象,这时的响应流的编码为utf-8,使用response.getWriter()输出的中文都会转换成utf-8编码后发送给客户端;setHeader(“Refresh”, “3;url=http://www.baidu.com”)
,表示3秒后自动刷新到http://www.baidu.com;setHeader(“content-type”, “xxx”)
的简便方法,即用来添加名为content-type响应头的方法。content-type响应头用来设置响应数据的MIME类型,例如要向客户端响应jpg的图片,那么能够setContentType(“image/jepg”)
,若是响应数据为文本类型,那么还要台同时设置编码,例如setContentType(“text/html;chartset=utf-8”)
表示响应数据类型为文本类型中的html类型,而且该方法会调用setCharacterEncoding(“utf-8”)
方法;response(404, “您要查找的资源不存在!”)
。ServletContext对象的做用是在整个Web应用的动态资源之间共享数据!例如在AServlet中向ServletContext对象中保存一个值,而后在BServlet中就能够获取这个值,这就是共享数据了。cookie
1. getRequestDispatch().forward() 请求转发跳转发生在服务器<容器>所以能够取得,浏览器不知道请求被转发了,因此地址栏上不会看到变化,sendRedirect发生在浏览器,要求浏览器从新请求另外一个URL,故又称为重定向,地址栏上会显示URL的变动。
2. 若是但愿下一个页面可使用此属性,用getRequestDispatch
3. 若是session.setAtrribute(“name”,“aa”) 若是但愿下一个页面可使用属性,两个方法均可以用,可是建议使getRequestDispatch
4. 若是但愿跳转到本网站外的URL,只能用sendRedirectsession
1.Serlvet接口只定义了一个服务方法就是service,而HttpServlet类实现了该方法而且要求调用下列的方法之一:
2.doGet:处理GET请求
3.doPost:处理POST请求
4.当发出客户端请求的时候,调用service 方法并传递一个请求和响应对象。Servlet首先判断该请求是GET 操做仍是POST 操做。而后它调用下面的一个方法:doGet 或 doPost。若是请求是GET就调用doGet方法,若是请求是POST就调用doPost方法。doGet和doPost都接受请求(HttpServletRequest)和响应(HttpServletResponse)。app
1.在要传递值的页面,Response.sendRedirect(url)
2.session
3.cookie
4.applicaiton
5.request.serAttribute(“uname”,u);
6.request.getRequestDispacther(“/…/…”)框架
(1).page:仅在当前页可用(保存在当前的PageContext中)
(2).request:仅用于当前客户端的请求(保存在ServletRequest对象中),它在同一个请求范围内有效.
(3).session:仅在当前的HttpSession的生命周期内,当前浏览器窗口的整个生存期都有效.关闭浏览器时,这个对象会跟着消失,在整个对话期间都有效.
(4).application:在整个应用范围内都有效,只有当服务器重启时,这个对象才会消失.jsp
1.JSP在本质上就是SERVLET,可是二者的建立方式不同.Servlet彻底是JAVA程序代码构成擅长于流程控制和事务处理而经过Servlet来生成动态网页;JSP由HTML代码和JSP标签构成,能够方便地编写动态网页
2.所以在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模3.JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不一样点在于,Servlet的应用逻辑是在Java文件中,而且彻底从表示层中的HTML里分离开来。而JSP的状况是Java和HTML能够组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
Cookie:服务器在客户端保存用户的信息
Session:服务器能够为每一个用户浏览器建立一个会话对象
Servlet是特殊的Servlet,可以对特定的请求路径进行过滤,在访问这个路径以前,先执行过滤器,过滤器进行预处理,过滤器决定是否继续执行后续的文件。典型的应用,能够把用户验证的代码写在过滤器中,而后把过滤的路径配制成须要验证的文件的路径。
Servlet监听器对特定的事件进行监听,当产生这些事件的时候,会执行监听器的代码。能够对应用的加载、卸载,对session的初始化、销毁,对session中值变化等事件进行监听。