读书人

servlet学习入门小结

发布时间: 2012-11-14 10:12:19 作者: rapoo

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>");

??//**************获得客户端浏览器信息*******************
?? ?//得到放有请求数据的一个遍历对象java.util.Enumeration<String>em=request.getHeaderNames();
?? //取得客户端的地址
//String clientAdd=request.getRemoteAddr();
//out.println(clientAdd+" 客户端请求头数据如下:");
//out.println("<hr>");
//out.println("<table border=\"1\" width=\"200px\">");
////遍历输出为一个table
//while(em.hasMoreElements()){
//String headName=em.nextElement();
//String headValue=request.getHeader(headName);
//out.println("<tr><td>"+headName+"</td>");
//out.println(" <td>"+headValue+"</td></tr>");
//}
?? //***************************************************
?? //取得客户端名字action的参数值out.println("</HTML>");
out.flush();
out.close();
}
}

?

?? 完整过程:

?? ? ? ?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)一般用于重定向到错误处理界面或者登陆界面。客户端地址栏发生变化,这次任务由客户端完成。

读书人网 >Web前端

热点推荐