什么是Servlet?对Servlet技术的浅尝解析

1.什么是Servlet技术:

       Servlet全称Java Servlet,是一个基于java技术的Web组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。狭义Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类。【主要处理客户端传过来的HTTP请求,并解析返回一个响应】
2.手动创建Servlet的三种方式:

(1)实现Servelt接口:
                init()、*service()、getServletConfig()、getServletInfo() 、destroy()、
(2)继承GenericServlet:
                service()
(3)继承HttpServlet:
                doGet()、doPost()

3.Servlet的生命周期:
            【注意:整个过程都是由Servlet容器同一管理调度,会生成很多对象和方法执行不同的功能且都是自动装载无需用户操作,用户只需要根据Servlet规范创建一个servlet,即生成一个特定的类即可】:
 浏览器发送http请求->web服务器接收请求转发至->Servlet容器->实例化一个Servlet对象->调用init()方法初始化Servlet参数信息->调用service()方法获取请求信息【注意:Servlet容器中自动生成HttpServletRequest对象封装请求信息】,并且向浏览器生成响应【注意:Servlet容器中自动生成HttpServletResponse对象封装响应信息】->Servlet将响应结果返回至容器->容器再将结果返回至客户端界面显示->最后响应结束关闭web服务器时会自动调用destroy()销毁servlet对象【如果同一时间收到另一个请求信息,servlet对象不另外生成且init()方法也不再执行
4.普通servlet开发和使用eclipse开发的本质区别:

(1)普通servlet开发流程:
        根据tomcat默认web项目路径在/webapps/下新建一个web项目,且架构要符合tomcat标准!具体查看tomcat自带的/webapps/manager案例!->根据servlet规范创建一个servlet即生成一个特定类(三种方法)->导入相关jar包->编译成class文件后放入特定web工程/WEB-INF/classes目录下->在web工程/WEB-INF/web.xml中部署servlet配置信息,【切记:项目的根路径为/表示http://127.0.0.1:8080/web工程名】

(2)eclipse创建servlet流程(第三种开发方式):
        新建web工程项目(自动生成web项目架构,不需要普通开发中的手动创建)->绑定tomcat服务器(解决了普通开发流程中的手动添加jar包并发布项目至服务器的过程)->创建一个servelt类(eclipse插件自动继承并生成指定的url映射和实现相关方法,不需要普通开发中手动编程和web.xml配置)
(3)结论:
        使用eclipse开发大大提高了开发效率,但是我们也一定要了解普通开发流程,这样才能更好的理解servlet开发的底层实现,为框架学习打下基础!
***************************************************************************************************************************对上述3.的补充即完整的Servlet运行机制:【注意:整个过程都是由Servlet容器同一管理调度,会生成很多对象和方法执行不同的功能且都是自动装载无需用户操作,用户只需要根据Servlet规范创建一个servlet,即生成一个特定的类即可】:
 浏览器发送http请求->web服务器接收请求转发至->Servlet容器->实例化一个Servlet对象->调用init()方法初始化Servlet的web.xml配置参数信息->调用service()方法获取请求信息,并且向浏览器生成响应【(1).Servlet容器自动生成HttpServletRequest对象封装请求信息->当要在服务器端显示中文时候调用request.setCharacterEncoding("utf-8")方法解决乱码问题->当要获取封装的请求信息调用request.getParameter("xx")方法->当要获取Servlet容器自动生成的session对象的时候调用HttpSession session = request.getSession()方法->当要读取保存在客户端浏览器的所有Cookie对象和值的时候调用Cookie[] cookies = request.getCookies()。(2).Servlet容器中自动生成HttpServletResponse对象封装响应信息->当要获取输出流打印内容到浏览器界面时候调用PrintWriter out = response.getWriter()和out.println("<h1>hello world<h1>")方法->当打印的信息出现中文乱码的时候调用->response.setCharacterEncoding("utf-8")和response.setContentType("text/html")->当要绑定Cookie值到浏览器中调用response.addCookie(cookie)->当浏览器Cookie被禁用时候调用response.encodeURL()。(3).Servlet容器中自动生成HttpSession对象并为该对象分配一个唯一的Session ID,将其作为Cookie自动发送给浏览器】->Servlet将响应结果返回至容器->容器再将结果返回至客户端界面显示->最后响应结束关闭web服务器时会自动调用destroy()销毁servlet对象【如果同一时间收到另一个请求信息,servlet对象不另外生成且init()方法也不再执行】

    

猜你喜欢

转载自blog.csdn.net/qq_37230121/article/details/80276434
今日推荐