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、读取资源文件的三种方式

  • 相关阅读:
    数据类型装换
    变量及数据类型
    27 网络通信协议 udp tcp
    26 socket简单操作
    26 socket简单操作
    14 内置函数 递归 二分法查找
    15 装饰器 开闭原则 代参装饰器 多个装饰器同一函数应用
    12 生成器和生成器函数以及各种推导式
    13 内置函数 匿名函数 eval,exec,compile
    10 函数进阶 动态传参 作用域和名称空间 函数的嵌套 全局变量
  • 原文地址:https://www.cnblogs.com/yys369/p/5325934.html
Copyright © 2011-2022 走看看