servlet学习入门总结
1、 jsp和servlet:
?? 从完成功能上来说,java servlet和jsp没有什么本质区别,jsp能做的事情servlet也能搞定,同样,servlet能搞定的事情jsp也能搞定,就像360和qq都能窥探个人隐私一样。但二者又有很大区别:
?? servlet是纯java代码,所以在编写网页方面很不方便,而jsp恰好相反。但是,jsp运行时需要转换成java代码,然后编译、加载运行。因此,各有利弊,结合使用。
?? jsp是在http或者xml文档中嵌入java脚本或者jsp标签形成的,是文本文件,而servlet是纯java文件,所有使用servlet完成的功能,包括与用户进行交互,都是通过java代码完成的。
?? servlet是运行在服务器端的小应用程序,相当于客户端的applet吧。可以接受web客户端的请求。
?
2、servlet的生命周期:
?? ?1)加载 ?
?? ? ? ? ? ? 服务器启动或第一次访问时,web容器加载servlet
?? ?2)初始化
?? ? ? ? ? ? servlet加载后,进行实例化,然后调用init方法进行初始化
?? ?3)服务
?? ? ? ? ? ?客户端发送请求时,服务器创建两个对象,分别是HttpServletRequest 和?HttpServletResponse ?的对象。前者包含请求信息,后者包含相应信息。然后调用service方法进行具体处理。?
?? ?4)删除?
?? ? ? ? ? ?服务器关闭或不再需要时,系统调用destroy方法释放资源。
?
?? Servlet类-->
?? 实例化加载-->
?? 初始化init(ServletConfig)-->
?? 就绪Service_request_response--> ? ? // <----客户请求
?? destory()销毁-->
?? 垃圾回收finalize() ? ?
?
?? servlet通常运行在多线程服务器上,所以能够支持并发请求,在处理的时候需要处理资源的共享。---?
?
3、制作一个完整的servlet。代码先行
?? out.println(" <BODY>");?
?? 完整过程:
?? ? ? ?1) 编写Servlet ?如上代码,使用myeclipse或者eclipse都可以轻松搞定;
?? ? ? ?2)编译Servlet ? 这一步开发工具代劳了。
?? ? ? ?3)配置Servlet ? 在web.xml中配置
?? ? ? ? ? ?*1、首先是servlet的申明 ? ?
?? ? ? ? ? ?<servlet>
?? ?<description>This is the description of my J2EE component</description>
?? ?<display-name>This is the display name of my J2EE component</display-name>
?? ?<servlet-name>loginServlet</servlet-name>
?? ?<servlet-class>servlet.demo.loginServlet</servlet-class>
???? ?</servlet>
?? ? ? ? ? ?*2、然后是servlet映射,主要配置访问该servlet的方式
?? ?<servlet-mapping>
?? ?<servlet-name>loginServlet</servlet-name>
?? ?<url-pattern>/loginServlet</url-pattern>
???? ?</servlet-mapping>
?? ? ? ? ? ? ? ? 注意:<url-pattern>后紧跟的“/”不能丢掉,否则访问不到资源!!
?? ? ? ? 4)部署servlet 好吧,这一步开发工具也代劳了,不过你也可以自己手动部署.
?? ? ? ? 5)请求servlet ?启动服务器,去浏览器发送请求吧
?? ?尽管开发工具帮助我们完成了很多工作使我们的开发变得更加简单,但能够了解servlet的具体创建过程能让我们更好的 ? ? 使用它。
?
4、servlet的请求转发
?? ?request.getRequestDispatcher("main.jsp").include(request, response);
?? ?request.getRequestDispatcher("error.html").forward(request, response);
?? ?response.sendRedirect("error.html");
?? ? ?1)include包含:将url中的内容(main.jsp)包含到当前的servlet输出当中,服务器端包办,客户端地址栏不跳转
?? ? ? ? 所有业务都在内部搞定
?? ? ?2)forward转发:将当前的request和responde交给指定的URL(error.html)处理,在服务器端完成,客户端路 ? ? ? ? ? ?径还是没有改变 。业务外包,挂自己牌子。
?? ? ?3)sendRequest重定向:指示客户端重新发送一次新的请求。第二个请求指向其参数(error.html)一般用于重定向到错误处理界面或者登陆界面。客户端地址栏发生变化,这次任务由客户端完成。