`
andey007518
  • 浏览: 22168 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

servlet 概要和相关技术总结

 
阅读更多
view plainprint?
servlet文档: 
 
1.服务器如何调用servlet的? 
 
    servlet是运行在服务器的程序,当客机请求服务器的时候,服务器servlet会调用service方法,它会自动判断如果它是get方式提交,那么   就调用doget()方法如果是post提交就调用dopost()方法.我们只需要重写doget()跟dopost()方法即可! 
 
 
2.servlet与生命周期相关的方法何时被执行: 
 
    1.任何从客户端发过来的请求,会导致service方法会被执行 
    2.当servlet被创建出来时,初始化方法init会被执行 
 
    * 生命周期 
 
        1、加载 
        2、实例化 和 初始化init()       只调用一次(默认第一次访问时) 
 
            a)使用 <load-on-startup>, web应用在启动时实例化 
            b)不用的话,是第一次请求servlet的时候实例化, 
            c)Servlet属于单利多线程模式。只有一个实例 
 
        3、进入服务 service ( ) {doGet()...doPost()}(分析请求)   每次请求都会调用 
 
        4、 销毁 destroy( )        战地在人在战地没人妄,只调用一次(web应用销毁时) 
 
3.如何创建跟配置一个servlet: 
 
    * 建 java 项目,导入 servlet.jar 包 
    * 继承自 HttpSerlvet 
    * 重写 doGet()doPost() 
    * 拷贝 .class 文件到 发布路径/WEB-INF/classes/ 
    * 在发布路径/WEB-INF/web.xml中配置servlet 
 
 
4.如何给配置WEB应用中的WEB.XML.以及它的工作原理。 
 
配置一个servlet分为2部分: 
1、  声明部分 
2、  部署部分 
当我们用URL(IP + 端口 + WEB发布目录)访问服务器时,首先会访问到WEB应用的跟目录,然后在跟目录里有个WEB-INF文件夹,文件夹中有WEB.XML是我们这个应用的配置中心,在它里面可以配置<servlet>跟<servlet-mapping>。mapping的意思是映射,就是说声明部分的servlet-name必须跟下面部署的servlet-name一致,这样别人通过IP地址+端口+web应用发布目录+访问路径,一访问就可以知道这个servlet的名字是什么,然后通过部署部分的名字找到上面声明部分的名字,然后再通过声明部分的名字找到要执行的servlet的class文件,然后执行。 
<!--  http://192.168.1.119:8080/发布路径/访问路径--> 
 
例子: 
        <servlet> 
            <servlet-name>servlet名字(随便取)</servlet-name> 
            <servlet-class>com.xasxt.HelloServlet</servlet-class> 
            注意:这里是包名+类名,不要给类再加上.java后缀!!! 
        </servlet> 
 
        <servlet-mapping> 
            <servlet-name>servlet名字(必须跟上面取的名字一样)</servlet-name> 
            <url-pattern>/访问路径</url-pattern> 
        </servlet-mapping> 
 
5、Init 
     
1)如何初始化init参数? 
 
在WEB应用中的WEB.XML中设置 
    <init-param> 
        <param-name>userName</param-name> 
        <param-value>12345678</param-value> 
    </init-param> 
 
2)通过什么方法可以得到这些参数,? 
         
我们知道在init方法被调用的时候就产生了ServletConfig,它可以理解是整个WEB.xml的代表。由了这个代表WEB。Xml中的东西就可以被访问到了。 
    config.getInitParameter(name) 
    config.getInitParameterNames() 
 
3)为什么要初始化init参数? 
    比如我们后期会把链接数据库的账号密码配置到这里,以后需要改动的时候在配置里改下就可以了,而不用去找代码改! 
 
6、一个web中不可能只有一个servlet,如何设置哪个servlet优先启动 
 
<load-on-startup>数值(最先0)</load-on-startup> 
 
7、 使用 HttpSerlvetRequest 对象 
         
        getParameter("参数名")接收指定参数名的值(String) 
         
        getParameterValues("参数名")接收指定参数名的一组值(String[]) 
         
        getParameterNames()返回所有的参数名 Enumeration 
         
        setCharacterEncoding("字符集")设置request的字符编码格式 
         
        getContextPath()得到WEB应用程序名称 
         
        getServletPath()得到servlet访问路径,也就是<url-pattern>中间的东西 
         
etMethod()获得请求方式(get还是post) 
 
getRequestURI()<发布目录+访问目录> 
         
getRequestURL()返回客户端发出请求时的完整URL 
 
HttpSession getSession(boolean bool):获取 HttpSession 对象 
            true: 已经存在session,返回当前session;不存在返回新创建的session 
            false:已经存在session,返回当前session;不存在返回 null 
            HttpSession getSession():相当于 getSession(true) 
 
getRemoteAddr返回发出请求的客户机的IP地址 
复习:Enumeration的用法 
    Enumeration<String> enums = request.getParameterNames(); 
            while(enums.hasMoreElements()){ 
String name = enums.nextElement(); 
    String[] values = request.getParameterValues(name); 
                if(null==values){ 
                    System.out.println(name+"="+""); 
                }else{ 
                    for (String value : values) { 
                        System.out.println(name+"="+value); 
                    } 
                } 
            } 
         
8、ServletConfig对象: 
    它代表着整个WEB应用中的WEB.xml配置 
9、ServletContext对象: 
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象它的作用的范围是整个WEB应用。 
 
作用:1.要是有一个程序给ServletContext,中存个数据,只要这应用程序不退出,别人都可以取。 
      2.可以访问WEB应用的资源文件 
 
拿到servletContext方式: 
 
this代表servlet 
ServletContext context = this.getServletContext(); 
 
 
10、 Request乱码的处理 
        我们提交的表单数据中有的值可能是中文的,提交过来以后出现了中文乱码,处理方式按照提交的方式有2种方法: 
1、如果是get提交方式: 
        Get方式提交的必须手动一个值一个值的进行处理,方式是: 
        String uname = getParameter(“uname”); 
        String name = new String(uname.getBytes(“iso8859-1”),”UTF-8”); 
2、如果是post提交方式: 
        Request. setCharacterEncoding(“UTF-8”); 
 
11、使用 HttpSerlvetResponse 对象   
             
        setContentType("text/html;charset=UTF-8")   设置响应输出类型 
             
        setCharacterEncoding("字符集") 设置 response 的字符编码格式 
 
        sendRedirect("路径")  设置 响应 的路径 
 
13、请求转发与重定向: 
 
  
response . sendRedirect(“路径”)    
1、重定向:其实是发一次请求,等响应回来之后,重新再去请求,然后再响应, 
也就是去了回来,然后再去再回来,第二次去也就是我们所要重定向的地址。 
 
1>显示最新的请求 
2>地址栏会变显示最新的请求地址。 
3>是客户端跟服务器之间 
4>request不同,所以不能使用:reqeust. setAttribute(key,value) 
 
2、转发: 
request.getRequestDispatcher(“ ”).forward( req ,resp) 
1>地址栏只显示第一次的请求地址,不会变 
2>服务器内部的处理过程 
3>参数可以累加 
4>可以使用 reqeust. setAttribute(key,value)存放对象在当前请求中 
14、Cookie: 
 
Cookie是客户端技术,程序把每个用户的数据以cookie的形式回写给用户各自的浏览器,或是存到硬盘上,当用户使用浏览器再去访问服务器中的WEB资源时,就会带着各自的数据去,这样WEB资源处理的就是用户各自的数据了。 
 
如果创建cookie。并将它发送到浏览器,默认情况下有效期就是浏览器进程, 
浏览器关闭cookie即被删除,如果希望该cookie存在磁盘上,则需要设置setMaxAge,那么设置的时间是多久,在这段时间中即使关闭浏览器,用新的浏览器去访问,cookie也是有效的。 
 
注意 : 
 
1、如果设置为0,则是命令浏览器删除该cookie 
2、删除cookie时,path必须一致,否则不会删除 
常用方法: 
创建:Cookie cookie = new Cookie(“代号名称”, 实际内容); 
get/setValue()     :得到或设置值 
get/setMaxAge()    :得到或设置有效期 
get/setPath()           :设置或得到Path 
getName()           :得到代号名称 
加入response.add();加入响应 
 
15、Session: 
void setAttribute(String name,Object value):把信息保存到当前浏览器对应的session中 
       Object getAttribute(String name):把信息从当前浏览器对应的session中取出,注意转型 
*Session生命周期: 
    生:用IE去访问服务器,服务器中的WEB应用中只要出现getSession那么session就创建了。 
    死:session不是说浏览器一关闭就死了,而是要等服务器规定的时间后才会死例如:30分钟后,即使你不关闭浏览器,30分后session也会死掉。 
 
*如何设置session有效期及摧毁session 
 
1、在WEB应用WEB.XML里设置 
<session-config> 
        <session-timeout>30</session-timeout> 
</session-config> 
 
2、用代码摧毁: 
    session.invalidate(); 
 
*Session原理: 
客户机用IE去访问服务器,服务器会在内部给这个IE开辟一块带IEsessionID的空间,然后把SessionID以Cookie的形式回写给浏览器,其实也就是一个没有设置有效期的Cookie。如果浏览器关闭客户端cookie资源也跟着即被删除,再次用IE访问则不会带着cookie去(因为cookie已经被删除了),但是以前那个IE的session空间依然存在(存在的时间根据你浏览器请求响应的最后一次开始算),这次服务器会再给当前这个IE新开辟一个IEsessionId空间。 
 
注意: 
 
1、Session的空间可以存放东西,但是不可以存放太多,比如:用户的账户密码什么的。 
2、我们知道session基于cookie,相等于一个没有有效期的cookie,如果我们给购物车里放了1000本书,然后浏览器突然关闭了,下次再访问,这1000本书就没有了,如何解决? 
    答:服务器的getSession在创建session空间时会回写给客户机的cookie是没有有效期的我们只需要在回写coolie的时候设置有效期,那么即使浏览器关闭了,那么新开的浏览器来访问的时候,也会带着cookie的资源来,我们买的东西依然在. 
服务器回写给客户机的sessionId是:JSESSIONID 
 
16、Application: 
    setAttribute(String name,Object value) 
        Object getAttribute(String name) 
 
    对所有客户端只有一个。服务器启动,生,服务器停止,死。 
    小例子: 
<% 
        int cc = 0; 
    if(null==application.getAttribute("webCount")){ 
        application.setAttribute("webCount",1); 
    }else{ 
        cc = (Integer)application.getAttribute("webCount"); 
        if(session.isNew()){ 
            application.setAttribute("webCount",cc+1); 
        } 
    } 
%> 
访问次数:<%=cc+1 %> 
 
12、*servlet细节: 
 
1. 
    针对客户端的多次servlet请求,通常情况下,服务器只会创建一个servlet实例对象,也就是说servlet实例对象一旦被创建 
    它就会驻留再内存中,为后续的其他请求服务,直到web容器推出servlet实例对象才会销毁! 
 
2. 
    同一个servlet可以被映射到多个URL上,即<servlet-name>一个它可以同时有 
    多个映射 
    <servlet-mapping> 
        <servlet-name></servlet-name> 
        <url-pattern></url-pattern> 
    </servlet-mapping>。 
 
3. 
    URL中可以使用通配符,但只能有2种:一种是:*.扩展名,另一种是/开头并以 
    /*结尾。*代表所有东西。 
分享到:
评论

相关推荐

    教务管理系统(概要设计及详细设计).doc

    总结来说,教务管理系统是一个复杂而全面的信息管理系统,采用现代软件工程设计原则,结合Struts、Spring和Hibernate等技术,构建了一个高效、灵活且易于维护的平台,实现了对教师和学生的信息化管理,有效提升了...

    web前端实训总结.doc

    * 详细要求有以下几点:问题的描述与程序将要实现的详细功能、程序功能实现的详细设计思路或框架、代码实现、设计小结。 2. Java 语言和 JavaWeb 开发技术 * 复习和锻炼 Java 语言、JavaWeb、Oracle 数据库应用...

    (完整word版)java实习报告3000字.doc

    Java 实习报告知识点总结 ...这篇实习报告涵盖了 Java 语言、JavaWeb、Oracle 数据库、Servlet 技术、页面设计、软件开发流程等多方面的知识点,为读者提供了一个系统和全面的了解 Java 开发的机会。

    tomcat的概要介绍与分析

    Tomcat是一个开源的、免费的Java Servlet容器,同时也是Java EE规范中JSP(JavaServer Pages)和Servlet技术的核心实现之一。它由Apache软件基金会(Apache Software Foundation)开发和维护,被广泛应用于开发和...

    网上书店系统的需求分析和概要设计.pdf

    【网上书店系统的需求...总结来说,网上书店系统的设计和实现涉及到多个方面,从用户需求分析到系统概要设计,再到具体的技术选型和开发流程,每个环节都需要细致考虑,以构建出高效、稳定、易用的在线图书交易平台。

    CSSP_CMS-网站开发概要设计说明书

    CSSP_CMS网站开发概要设计说明书详细描述了项目的技术选型、系统架构、运行环境、用户角色模型、用例描述、系统设计原则以及数据结构和错误处理策略,为后续的详细设计和开发工作提供了全面的指导。通过这样的设计,...

    基于WEB汽车租赁系统概要设计说明书.DOC

    系统需在支持Java Servlet和JSP的Web服务器上运行,如Tomcat,配合MySQL数据库存储数据,确保稳定性和安全性。同时,兼容主流浏览器,如Chrome、Firefox、Safari等。 2.3 基本设计概念和处理流程 系统采用B/S架构...

    (精品word)java实习报告3000字.doc

    Java 实习报告 3000 字 ...我们还了解了 Servlet 技术和 JSP 页面设计的基础知识,并掌握了 MVC 模式。通过本次实习,我们提高了自己的编程能力和团队协作意识,为毕业之后能够更快地进入工作状态奠定了基础。

    java的概要介绍与分析

    2. **Web开发框架**:除了传统的Servlet和JSP外,Spring Boot和Spring MVC等现代框架大大简化了Web应用的开发流程。 3. **大数据处理框架**:Hadoop、Apache Spark等框架均使用Java开发,它们为处理大规模数据集提供...

    软件工程文档实例(管理系统设计和实现)

    概要设计说明书详细描述了各子系统的功能和相互关系,技术路线选择JSP作为前端展示,JavaBean处理业务逻辑,Servlet进行请求转发,SQL 2000用于数据存储。 三、详细设计 详细设计阶段则深入到每个模块的具体实现,...

    易买网概要设计说明书

    ### 易买网概要设计说明书知识点解析 #### 一、引言 1. **编写目的**:本文档旨在清晰地定义易买网购物商城系统的各个功能模块如何实现,为开发团队提供指导,确保项目的顺利进行。预期读者包括项目经理、系统分析...

    java个人博客毕业论文

    2 JSP及其相关技术 2 2.1 JSP技术 2 2.1.1 JSP的运作模式 3 2.1.2 JSP的特点 5 2.2 Servlet技术 8 2.2.1 Servlet 技术概述 8 2.2.2 Servlet 与 JSP 之间的关系 9 2.2.3 Servlet 应用范围及缺陷 9 2.2.4 Servlet 的...

    2019年学习java的实习总结.pdf

    2019年的实习总结中,重点强调了通过学习Java语言及其相关技术,以提升编程技能和适应软件开发流程。以下是对实习内容的详细阐述: 一、实习目的: 实习的主要目标是巩固Java语言、JavaWeb和Oracle数据库的基础知识...

    java培训实习总结.doc

    在Java培训实习过程中,学员们深入学习了Java编程语言以及相关技术,旨在提升实际项目开发能力和适应未来软件公司的需求。实习主要包括以下几个核心知识点: 1. **Java语言基础**:Java是一种面向对象的编程语言,...

    基于java EE医疗机械设备采购管理系统设计与实现.doc

    本资源摘要信息旨在总结基于 Java EE 医疗机械设备采购管理系统的设计与实现,涵盖系统开发相关技术、系统分析、系统总体设计等方面的知识点。 系统开发相关技术 Java EE 技术是 Java 平台企业版的简称,提供了一...

    本科毕业论文---科研团队门户网站设计与实现设计报告论文.doc

    以团队新闻管理和论坛模块为例,展示了如何在MVC模式下运用JSP和Servlet技术进行设计和实现。JSP用于生成动态网页,Servlet处理HTTP请求,两者结合实现了前后端交互。 最后,第六章对整个项目进行了总结,回顾了...

    【报告】java实训报告总结(三篇).pdf

    - 实验小结是学生对实训体验的反思,包括心得体会、问题思考以及改进建议。 3. **Java实训内容**: - 学习Java语言基础,理解面向对象编程概念。 - 学习JavaWeb技术,如Servlet、JSP等,用于构建B/S架构的Web...

Global site tag (gtag.js) - Google Analytics