Servlet笔记

来源:互联网 发布:java web书籍推荐 编辑:程序博客网 时间:2024/05/21 03:58

一,什么是servlet
①servlet是一个运行在web服务器中的一个java小程序,可以理解为一个java类
②可以通过HTTP协议接收和响应来自web客户端的请求

1.1编写servlet小程序的步骤    ①创建一个java类实现servlet接口    ②在web.xml配置文件中,通过<servlet>和<servlet-mapping>两个标签来配置访问小程序的路径        配置方法:            <servlet>                <servlet-name>标识名</servlet-name>                <servlet-class>包名.类名</servlet-class>            </servlet>            <servlet-mapping>                <servlet-name>标识名</servlet-name>                <url-pattern>/访问地址名</url-pattern>            </servlet-mapping>        访问步骤:            ①在浏览器地址栏中输入访问地址时,会调用web-info文件夹下的web.xml配置文件来获得一系列配置信息            ②在servlet-mapping标签验证"访问地址名",从而获得对应的"标识名"            ③获得标识名后,在sevlet标签中验证"标识名",从而获得服务器中存在的类的字节码文件,并将类实例化(调用servlet中的构造方法)            ④调用servlet类中的init()方法            ⑤调用servlet类中的service()方法处理业务            ⑥将信息响应给浏览器客户端            ⑦调用destroy()方法结束servlet类        访问流程图如下:        ![servlet程序运行流程图](http://img.blog.csdn.net/20170223151339563?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjYyMDUyOTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)    ③部署到服务器中    ④测试访问

二,生命周期

实例化对象->init()->service()->destroy()小知识点:    如何让servlet小程序在服务器加载时就运行?        在servler标签中加入<loading-on-startup>2</loading-on-startup>标签

三,servlet的三种创建方式

①继承Servlet接口    重写5个方法②继承GenericServlet类(适配器模式)    重写service()方法③继承HttpServlet类(模板方法设计模式)    重写doGet()方法和doPost()方法

四,servlet的线程安全问题

最佳办法:不写全局变量,写局部变量

五,使用ServletConfig获取配置信息

1,获取对象的方式    该对象由服务器创建,在调用init(ServletConfig config)方法时可以获取到    ServletConfig config;    init(ServeletConfig config){        this.config=config;    }2,作用    ①,获取sevlet配置信息        serrvlet配置信息的位置        <servlet>            <servlet-name></servlet-name>            <servlet-class></servlet-class>            <init-param>                <param-name>encoding</param-name>                <param-value>gbk</param-value>            </init-param>        </servlet>        方式一:            先在init方法中获取到config对象            config.getInitParameter("encoding");//配置文件中配置的名字        方式二:        this.getServletConfig().getInitParameter("encoding");//通过父类中的对象来调用方法        方式三:        this.getInitParameter();//通过继承下来方法去找对象来调用方法    ②,获取ServletContext对象

六,ServeletContext方法(重要)

①是什么?    ServletContext对象代表整个应用    单实例,只有一个对象②如何获得对象?    ServletConfig sc=this.getServletConfig();    ServletContext sc=this.getServletContext();③作用是什么    1,域对象:在当前应用中,让多个Servlet共享数据        setAttribute(String name,Object value)//设置键值对        getAttribute(String name)//通过键,获取值        removeAttribute(String name)//通过键,删除键值对        数据存储示意图如下:        ![数据存储示意](http://img.blog.csdn.net/20170223163419970?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjYyMDUyOTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)    2,获取全局配置信息        I,web.xml中的配置信息            <content-param>                <param-name>encoding</param-name>                <param-value>utf8</param-value>            </content-param>        II,通过ServletContext对象中的方法去获取配置信息            sc.getInitParameter(String name)//根据配置名去获取配置值    3,获取资源路径        作用:可以得到当前应用中任何位置的任何资源        String path=sc.getRealPath("/WEB-INF/....");    小知识点:        依赖:通过参数获取的对象        关联:通过方法获得的对象

七,转发与重定向

①转发    //dispatcher:发报机    //先获取一个请求发报机对象,定位要发送请求的位置    RequestDispatcher rd = new RequestDispatcher("Demo2");//另一个Servlet的位置    //利用发报机发送请求和等待的回应过去    rd.foward(request,respond);     ②定向
0 0
原创粉丝点击