JavaEE学习总结(1) - Servlet

本文介绍了Servlet的基本概念,包括Servlet作为服务器端的小程序如何处理客户端请求并做出响应,以及Servlet的生命周期,从创建、初始化到服务阶段直至销毁的过程。此外,还详细解释了Servlet处理请求的方式及常用对象HttpServletRequest和HttpServletResponse的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.关于servlet

首先servlet也是java的一个类。它是运行再服务器上的一个java小程序,它在服务器端运行处理客户请求并且做出响应。这也是它的作用。

2.servlet的生命周期

1.新生 :new ,当客户端发送一个请求时,Servlet容器(Tomcat)会查找内存中是否存在Servlet实例,如果不存在,就创建一个Servlet实例。

如果存在Servlet实例,就直接从内存中取出该实例来响应请求。
2.初始化 :一次。初始化阶段,init()方法被调用,可以在init()方法中自定义初始化。
3.服务(运行)阶段: service(doGet,doPost)提供服务,可以多次对客户端请求进行处理并做出响应。体现其作用。
4.销毁 :一次。销毁由容器完成,销毁调用Servlet的destroy()方法。
5.垃圾回收

3. Servlet处理请求

servlet处理请求主要是基于HttpServletRequest和HttpServletResponse对象的。这两个对象,前者封装了所有客户端请求,

后者封装了所有的响应。通过这两个对象对请求进行处理并做出相应。

4.HttpServletRequest对象

封装了所有客户端请求
常用方法:setCharacterEncoding():设置请求体中的字符编码;
    getParameter(name);根据参数名获得参数值;
    getSession(); 获取session
    getParamerterValues(name):根据参数名获得多个值;
    getParameterNames():获得所有的请求参数名
    getParameterMap():获得(请求名-值)对的集合
    getRemoteAddr():获得客户端的ip地址
    getRequestURL():获得完整的请求地址(地址栏)
    getRequestURI():获得uri(服务器之后的,不包含请求参数)
    getContextPath():获得上下文路径(布署在tomcat中的应用名)
    getServletPath():获得请求的uri-mapping(映射名,不包含应用名)
    getQueryString():获得请求参数字符串(post请求,无此字符串)
    getMethod():获得请求方法名;(get,post)

5.HttpServletResponset对象

封装了服务端给客户端的响应。

常用方法:getWriter():获得一个字符流;(生成网页)
        getOutputStream():获得字节流(下载)
        setContentType():设置内容类型;
        sendRedirct():重定向一个新的页面
        addHeader():向客户发送消息头
        addCookie():向客户发送一个小文本;

6.Servlet的其他接口

1.ServletContext接口

    ServletContext是由容器为我们创建的,只有一个,是servlet上下文接口,通过它可与容器(服务器)进行通迅;每一个工程只有一个上下文;

    1.它的作用是: 1.使用它访问运行环境;例如获得web应用运行的真实路径;(/webproject)
                2.使用它可存储所有servlet共享的数据;(一个环境下的所有servlet)

    2.常用方法:setAttribute();
            getAttribute();
            getContextPath();获取工程名
            getRealPath();

2.ServletConfig接口

    ServletConfig是servlet的配置信息对象,在init一个servlet时,我们通过它来获得在web.xml文件配置的数据;
    获得ServletConfig对象的方法;this.getServletConfig();
    常用方法: getInitParameter();
            getInitParameterNames();

7.Servlet的转发和重定向
转发和重定向都能让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。

    1、转发:有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获得,一种是通过ServletContext的getRequestDispatcher()方法获得;
转发是将request中的数据发送到jsp页面进行展示处理,总体来说是将一个web组件将未完成的处理通过容器转交给另外一个web组件继续完成,只有一次请求 例如:
request.getRequestDispatcher (“booklist.jsp"). forward(request, response);//转发到booklist.jsp

2、重定向:HttpServletResponse的sendRedirect()方法。
  服务器根据此请求寻找资源并发送给客户,它可以重定向到任意URL,不能共享request的数据,因为是多次请求。例如:response.sendRedirect(“login.jsp");//重定向到login.jsp

 详解:假设浏览器访问servlet1,而servlet1想让servlet2为客户端服务。此时servlet1调用sendRedirect()方法,将客户端的请求重新定向到Servlet2。接着浏览器访问servlet2,servlet2对客户端请求作出反应。浏览器URL的地址栏改变。


3、主要区别:
转发                                          重定向
服务器转向另一个新地址                 浏览器获取响应后再发一次新的请求
一个请求对象,且共享数据               两次请求,不共享数据
地址栏不变                           地址栏改变为新的地址
新地址必须是应用内部某个地址            可以是任意地址

8.Servlet实例可以有几个?

Servlet实例是可以有多个的,自己写xml就知道了。但一个实例必须对应一个url。但多例很少用,没有意义。
单例多线程就可以满足多用户请求,还节省资源。
所以实际上Servlet并不是单例,只是容器(希望)让它只实例化一次,变现出来的是单例的效果而已。只是Web容器在维护这些Servlet的时候只给创建一个实例存在JVM中,(但可以通过xml让服务器创建多个实例),用户请求服务时,服务器只调用它已经实例化好的Servlet对象来处理请求。
Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 一、Unix前言............7 二、Unix基础知识....7 三、Unix常用命令....8 四、 文件系统权限.21 五、软硬连接的区别..........................22 六、范例程序...........22 七、网络基本命令...26 八、Shell scripts:脚本编程.................28 Core Java学习笔记...........31 第一章 JAVA前言..31 第二章 标识符,关键字,类型........35 第三章 表达式与流控制....................41 第四章 数组.............50 第五章 对象和类(OO思想).........53 第六章 高级语言特性........................59 第七章 异常.............74 第八章 图形用户接口:GUI.............78 第十一章 事件处理模型....................79 第十三章 线程(Threads)....................80 第十四章 标准I/O流与文件.............84 第十五章 网络编程.89 Tiger学习笔记..................94 第一章 Java5.0新特性.......................94 第二章 基础知识.....96 第三章 泛型...........101 第四章 Annotation.102 XML学习笔记...............106 XML前言...............106 第一章 XML Overview....................107 第二章 DTD...........109 第三章 XML Namespaces................111 第四章 XML Schema.....................115 第五章 XML解析...................119 Oracle学习笔记...............121 前言....................................121 第一章 Selecting Rows.....................124 第二章 Limiting Selected Rows.......127 第三章 Single Row Functions..........127 第四章 Displaying Data from Multiple Tables......................130 第五章 Group Function(组函数)......130 第六章 Sub queries(子查询)............132 第七章 指定运行时变量..................133 第八章 数据模型和数据库设计......134 第九章 Creating Tables(创建表)......135 第十章 Oracle Data Dictionary(数据字典表)........................138 第十一章 Manipulating Data(对表的操作)140 第十二章 Altering Tables and Constraints..142 第十三章 Creating Sequences..........145 第十四章 Creating View(创建视图)146 第十五章 Creating Indexes(创建索引).....148 第十六章 权限的授予与收回..........149 第十七章 Summary..........................151 :::::::::::::: 精点课上实例::::::::::::......152 JDBC学习笔记...............165 第一章 JDBC Overview(JDBC综述).........166 第二章 Using JDBC(JDBC的使用)167 第四章 JDBC Advanced Topics(JDBC高级特性)................170 第五章 JDBC2.0 Core Features(JDBC2.0 新特性)...............171 第六章 JDBC2.0 Standard Extensions........174 第七章 Row Set Implementation......176 第三章 OOAD and Database Design..........176 第八章 JDBC and Application Architecture..........................178 Hibernate学习笔记..........180 第一章 Hibernate入门.....................180 第二章 对象/关系映射基础.............183 第三章 关联关系映射......................185 第四章 操纵持久化对象..................190 第五章 事务控制...191 第六章 高级映射...192 第七章 高级查询...196 HTML&java; script学习笔记.....................198 HTML: 超文本标记语言.......................198 1、html简介...........198 2、动态网页开发技术......................199 3、html的基本构成..........................199 4、HTTP-EQUIV...200 5、html的标签.......202 6、CSS...................205 JavaScript...................206 一、JS概述............206 二、JS的基础语法208 三、JS常用内置对象(11)............209 四、DHTML(动态HTML对象)......210 五、JavaScirpt高级技巧..................210 Servlet学习笔记..............212 Servlet前言.............212 第一章 Servlet Basic ........................214 第二章 Form表单.219 第三章 Servlets生命周期................222 第四章 资源访问 ......................225 第五章 状态跟踪...230 第六章 过滤器 ...234 第七章 Web Application Life Cycle Events ........................235 JSP学习笔记..................236 JSP前言.................236 第一章 Introduction to JSP...............238 第二章 Creating,Deploying and Executing a JSP..................239 第三章 JSP Scriplets,Directives and Action .................240 第四章 Working with Reusable Components(重用的组件)..241 第五章 Handling Exceptions(异常的处理)243 第六章 Advanced Topics(高级主题)..........243 第七章 Custom Tags(自定义标记) .246 第八章 EL元素(Expression Language)......247 第九章 Java Server Page Tag Libraries(JSTL)......................248 Struts学习笔记...............263 Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data Transfer & Type Converter..273 第五章 Validation(数据格式验证)..276 第六章 Internationalization(I18N:国际化)..........................283 struts1.x...283 一、开发struts1应用的基本步骤...283 二、Struts的工作流程......................284 三、struts-config.xml配置文件中主要的元素和属性.........286 四、RequestProccessor.....................287 五、Struts1的执行流程....................289 六、struts1的高级部分....................290 七、struts1中的国际化处理............291 Ajax学习笔记.................291 Ajax前言...............291 Ajax正文 ......292 Ajax在线聊天室的实现...................294 OOAD & UML学习笔记295 第一章 OOAD概述.........................295 第二章 UML..........299 第三章 需求与初始化分析..............300 第四章 分析阶段的静态建模..........302 第五章 分析阶段的动态建模..........306 第六章 设计原则与模式..................307 EJB学习笔记..................314 EJB前言................314 EJB2.0.....315 第一章 EJB介绍 .315 第二章 First EJB....318 第三章 EJB原理.320 第四章 Session Bean(会话Bean).....322 第五章 消息驱动Bean(MDB).........327 EJB3.0.....329 第一章 EJB3.0 Foundation...............329 第二章 Session Bean........................330 第三章 消息驱动Bean(MDB).........332 第四章 JPA(Java Persistence API)...332 第五章 Advanced Persistence Concepts(JPA-高级持久化)..336 第六章 事务...........341 Spring学习笔记...............345 第一章 Spring概述..........................345 第二章 Spring IOC(控制反转)........347 第三章 Spring AOP(面向切面编程)..........351 第四章 Spring中的数据访问..........353 CVS学习笔记.................355 PL/SQL学习笔记............358 第一章 PL/SQL概述........................358 第二章 PL/SQL程序结构................359 第三章 PL/SQL数据类型................362 第四章 PL/SQL中的控制语句........368 第五章 PL/SQL游标........................370 第六章 PL/SQL异常........................373 第七章 PL/SQL存储过程................374 第八章 PL/SQL包.380 第九章 PL/SQL触发器....................382 第十章 动态PL/SQL........................383 ant学习笔记...................387 Web Service学习笔记.....388
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值