zoukankan      html  css  js  c++  java
  • Servlet知识

    1、Servlet概述

    2、编写Servlet的开发步骤
    a、建立标准的JavaWeb应用目录
    FirstApp
    WEB-INF
    classes
    lib
    web.xml
    b、编写一个类,实现javax.servlet.Servlet接口
    package com.itheima;

    import javax.servlet.*;
    import java.io.*;
    public class HelloServlet implements Servlet{
    public void destroy(){}
    public String getServletInfo(){
    return null;
    }
    public void service(ServletRequest req,
    ServletResponse res)
    throws ServletException,
    IOException{
    String data = "hello servlet";
    res.getOutputStream().write(data.getBytes());
    }
    public ServletConfig getServletConfig(){return null;}
    public void init(ServletConfig config)
    throws ServletException
    {}
    }
    c、进入HelloServlet的目录,执行javac -d . HelloServlet.java进行编译(要把servlet-api.jar加入到classpath中)
    d、Servlet映射到某个地址上:修改web.xml
    <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.itheima.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>
    e、部署到Tomcat中
    f、访问地址:http://localhost:8080/FirstApp/HelloServlet

    3、编写Servlet也可以继承javax.servlet.GenricServlet
    如果是与HTTP协议有关,也可以继承javax.servlet.http.HttpServlet,至少要覆盖doXXX方法。不能覆盖service方法,他有标准实现。


    Tip:
    servlet-api.jar:
    含两个包:
    javax.servlet.*:通用的类放在此处,与具体协议无关
    javax.servlet.http.*:专门服务于HTTP协议。


    Tip:
    修改MyEclipse生成的Servlet模板:
    MyEclipse8.5:在安装目录中搜索*wizard*(com.genuitec.eclipse.wizards_8.5.0.me201003052220.jar)的文件,打开,找到Servlet.java文件,修改即可(注意:修改前先备份,推出MyEclipse)

    4、Servlet的生命周期
    4.1默认情况下,Servlet类在第一次访问时才会被容器实例化,并接着调用init方法进行初始化。
    针对用户的每次访问,只初始化一次,但service方法会调用多次。
    4.2希望在容器加载应用时就初始化Servlet?
    解决办法:
    <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.itheima.HelloServlet</servlet-class>
    <load-on-startup>1</load-on-startup> //取值自然整数,标识了Servlet的加载顺序
    </servlet>
    <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>

    Tip:Servlet的映射细节
    a、同一个Servlet可以被映射到多个URL地址上
    b、Servlet的映射支持通配符*
    通配符写法有2种:
    以*开头,以扩展名结尾,比如*.do
    以/开头,以*结尾,比如/action/*

    知识点:使用通配符时,如果找到多个匹配,到底执行的是哪个Servlet原则:绝对匹配--->从前往后匹配---->/开头的匹配优先级高
    如果某个Servlet的映射路径为一个"/",那么称之为默认Servlet。负责处理没有的配置。
    当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet。


    5、线程安全问题
    实现javax.servlet.SingleThreadModel的Servlet有2中解决线程安全问题的办法:(不同的服务器不同)
    a、对资源进行同步处理(不可行)
    b、搞了多个Servlet的对象为您服务(不可行):Tomcat的实现了此种方式。


    避免资源冲突的原则:尽量使用局部变量;实在局部不了的,一定要做同步处理。同步代码块尽量包围少的代码。
    在Servlet尽量使用局部变量。

    6、如何得到Servlet中的配置参数:ServletConfig
    作用:代表针对Servlet的参数配置。
    <init-param>
    <param-name>encoding</param-name>
    <param-value>GBK</param-value>
    </init-param>
    7、ServletContext
    7.1ServletContext:当容器加载JavaWeb应用时,会为每一个JavaWeb应用创建对应的ServletContext对象(每个应用只有一个)。
    JavaWeb应用的总管。
    获取ServletContext对象的引用:ServletConfig.getServletContext()
    ServletContext还是一个域对象:域对象实际上其内部维护了一个Map<String,Object>
    它的生命周期是整个web应用的生命周期。


    a、实现Servlet间的数据共享
    b、请求转发
    c、读取资源文件的三种方式

     -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    2、Servlet概述
    3、编写Servlet的开发步骤
    4、Servlet的生命周期
    5、如何得到Servlet中的配置参数:ServletConfig
    6、线程安全问题
    7、ServletContext
    a、实现Servlet间的数据共享
    b、请求转发
    c、读取资源文件的三种方式

  • 相关阅读:
    JavaScript原型、闭包、继承和原型链等等总结
    JS创建对象的几种方式整理
    js中 给json对象添加属性和json数组添加元素
    JSON 数组
    httpclient封装
    java 数字和日期处理
    jmeter所有版本下载路径
    idea的使用
    Java环境的搭建
    Axure8.0可用的授权码
  • 原文地址:https://www.cnblogs.com/yys369/p/5325934.html
Copyright © 2011-2022 走看看