`
lidayedeTech
  • 浏览: 15205 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

[zt] 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种:一种是:*.扩展名,另一种是/开头并以 
    /*结尾。*代表所有东西。 
分享到:
评论

相关推荐

    zt411-zt421-ug-zhcn_ZT411/ZT421_斑马打印机手册_

    总结,斑马打印机ZT411和ZT421的中文手册是用户操作、维护和解决问题的重要工具。它详尽地涵盖了打印机的所有方面,无论是初次使用者还是经验丰富的技术人员,都能从中获益。通过学习和参考这份手册,用户可以充分...

    zebra ZT400系列打印机技术手册

    ### zebra ZT400系列打印机技术手册 #### 知识点概述: 1. **版权及法律声明**:Zebra ZT400系列打印机技术手册的版权及相关软件固件的所有权归属ZIH Corp.及其许可证持有者,未经授权复制会受到法律制裁。 2. **...

    jsp Servlet基础入门学习教程(ZT).txt

    从给定的文件信息中,我们可以提取出关于JSP(JavaServer Pages)和Servlet的基础入门学习教程的关键知识点,以下是对这些知识点的详细说明: ### 1. Java Servlet 的优势与特性 Servlet是一种运行在服务器端的...

    ZT213/ZT213LEEA规格书V2.10-低功耗RS232多通道USB收发器/驱动器芯片手册

    《ZT213/ZT213LEEA:低功耗RS232多通道USB收发器/驱动器芯片详解》 ZT213/ZT213LEEA是一款专为低功耗应用设计的RS232多通道USB收发器和...通过不断探索和实践,我们可以充分利用这些先进技术,推动智能设备的发展。

    ZT7548 Datasheet Rev.1.0.3.pdf

    ZT7548的设计目标是实现混合触摸功能,具备自我和互电容感应技术,从而提供增强的防水、悬停、高电压感应、手套触摸和增强的触控笔检测能力。此外,该触控IC支持CDMS(SF)增强SF技术和高信噪比(SNR)。 ZT7548...

    Zebra ZT230 条码打印机驱动

    - Zebra作为专业条码打印机制造商,提供全球性的售后服务和技术支持,用户可以通过官方网站获取最新的驱动程序更新、故障解决方案和咨询服务。 通过以上信息,用户不仅可以了解如何安装和使用Zebra ZT230条码打印...

    ZT598命令集技术手册(C45)(B46.04)_证通密码键盘指令集_

    《ZT598命令集技术手册》是针对证通密码键盘操作与通信的重要参考资料,主要涵盖了一系列串口指令的详细说明。这份手册对于理解和掌握如何通过串行接口与密码键盘进行有效通信至关重要,尤其在金融、安防以及其他...

    ZT410打印机IP地址设置网络打印机

    ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机

    斑马打印机ZT210用户指南

    本设备符合 FCC 的相应技术标准供家庭、办公、商业和工业使用如果未对设备进行未经授权的更改,或者如果本设备维护或操作得当。本设备也符合加拿大 ICES-003 标准的要求。 FCC 符合性声明 本设备符合 FCC 法规第 15...

    斑马zt410中文库

    斑马(Zebra)ZT410是一款先进的桌面级条码打印机,被广泛应用于物流、零售、医疗、制造业等多个行业。这款打印机以其高效、耐用和易于操作的特点深受用户喜爱。"斑马zt410中文库"指的是为ZT410打印机特别设计的中文...

    斑马ZT510打印机驱动文件

    斑马ZT510打印机驱动文件

    证通ZT598金属键盘开发资料.rar

    总之,证通ZT598金属键盘的开发工作是一项技术性强、要求细致的任务。开发者需要具备一定的嵌入式系统开发经验,对SDK的深入理解和熟练应用是成功集成的关键。通过学习和实践,开发者将能充分利用这款设备的安全特性...

    zt-exec-1.9-API文档-中英对照版.zip

    赠送jar包:zt-exec-1.9.jar; 赠送原API文档:zt-exec-1.9-javadoc.jar; 赠送源代码:zt-exec-1.9-sources.jar; 赠送Maven依赖信息文件:zt-exec-1.9.pom; 包含翻译后的API文档:...双语对照,边学技术、边学英语。

    RS485通信芯片zt13085e的原理图库和PCB库

    RS485通信芯片ZT13085E是一种常用的工业级串行通信接口芯片,主要用于构建远程、多节点的通信网络。在工业自动化、楼宇自动化、物联网设备等领域有广泛应用。ZT13085E的设计目标是提供一种高效、可靠的数据传输方式...

    斑马打印机(ZT210).docx

    斑马打印机ZT210是一款专业的工业级条形码和标签打印机,广泛应用于物流、零售、医疗等行业的标签制作。以下是对如何设置和使用斑马ZT210打印机的详细步骤: 首先,我们需要安装电脑驱动。双击下载好的驱动程序文件...

    ZT-TR43系列参数设置软件

    总结而言,ZT-TR43系列参数设置软件是LED设备管理和优化的重要工具,它赋予了用户对LED设备的全面控制,提高了工作效率,降低了维护成本。掌握这款软件的使用,无疑将提升对LED设备的管理能力,使其发挥出最大的潜力...

    zt-exec-1.9-API文档-中文版.zip

    赠送jar包:zt-exec-1.9.jar; 赠送原API文档:zt-exec-1.9-javadoc.jar; 赠送源代码:zt-exec-1.9-sources.jar; 赠送Maven依赖信息文件:zt-exec-1.9.pom; 包含翻译后的API文档:zt-exec-1.9-javadoc-API文档-...

    ZT19600/25/50端头液压支架的应用

    根据给定文件信息,可以提炼出以下知识点: 1. 端头液压支架概念: ...通过这些知识点,可以全面理解ZT19600/25/50端头液压支架的应用背景、技术特点、实际应用效果以及其在矿业安全生产中的重要性。

    斑马zt210打印机驱动 v5.1.07.5146 官方版

    斑马zt210是一款专为中国市场设计的工业条码打印机,非常适合不需要频繁更换标签的条码标签应用。这里给大家提供斑马zt210驱动下载,推荐有需要的用户下载安装。斑马zt210打印机优势:◆ 节省空间* 小巧紧凑和流线型...

Global site tag (gtag.js) - Google Analytics