servlet

原创 2015年07月11日 01:02:04

一、Servlet

1.servlet概述

    Servlet就是一个java程序,运行在服务器端.进行创建,运用和销毁

2.编写Servlet的步骤

a、建立一个web project

b、编写一个Servlet,需要实现javax.servlet.Servlet接口

c、映射Servlet

给Servlet程序一个可以访问的URL地址。通过修改web.xml来实现

d、部署应用到Tomcat服务器

3.执行过程

4.Servlet生命周期

  • 诞生:第一次被访问,由容器创建对象的实例;并接着调用ini(ServletConfig cfg)方法进行初始化
  • 活着:应用活着它就活着。Servlet的一个实例是单例的。
  • 死亡:应用被卸载时,由容器调用destroy()方法。

Servlet接口:与Servlet生命周期有关的方法

    void init(ServletConfig cfg):初始化
    void service(ServletRequest req,ServletResponse res);   
    void destroy()

改变Servlet的初始化时机:

默认:第一次访问。<load-on-startup>-1
改为:应用被服务器加载时就完成实例化和初始化.web.xml
`<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.itheima.servlet.HelloServlet</servlet-class>
    <load-on-startup>2</load-on-startup><!--1已经被使用了,需要使用2或者2以后的数字-->
</servlet>`    

5.Servlet的线程安全

  • 尽量不要使用实例变量。应该使用局部变量。
  • 如果必须用到实例变量,请做好同步处理。

6.默认Servlet(了解)

如果一个Servlet的映射地址是一个”/”,那么这个Servlet就是默认的Servlet。
默认的Servlet用于处理在web.xml找不到映射的所有请求。

不要自己映射默认的Servlet。在Tomcat\conf\web.xml有配置。

7、Servlet映射细节

  1. 一个Servlet的实例可以被映射到多个访问的地址上
  2. servlet的映射可以使用通配符:*

    • 方式一:以*开头,以某个扩展名结尾
    • 方式二:以/开头,以*结尾(优先级高)

二、Servlet规范的核心类图

三、ServletConfig

  • 作用:针对某个Servlet程序进行参数配置。每一个Servlet都有自己的ServletConfig实例。
  • 怎么得到:在初始化Servlet时,服务器会创建ServletConfig的实例,并传递给Servlet对象。

实例: 为某个Servlet配置参数:修改web.xml

//配置web.xml
<init-param>
    <description>配置初始化参数</description>
    <param-name>encoding</param-name>
    <param-value>utf-8</param-value>
</init-param>
//读取指定的参数
ServletConfig con = getServletConfig();
    String encoding = con.getInitParameter("encoding");
    if (encoding==null) {
        encoding="utf-8";
    }
    System.out.println("当前编码:"+encoding);
//读取所有参数
    Enumeration<String>  e = con.getInitParameterNames();
    while (e.hasMoreElements()) {
        String paraName = (String)e.nextElement();
        System.out.println("参数名:"+paraName+"  参数值:"+con.getInitParameter(paraName));
    }

四、ServletContext

1. 作用:代表一个javaweb应用

2. 生命周期

  • 诞生:应用一旦被加载,服务器就会创建ServletContext的实例。
  • 活着:应用不挂,它就存在。
  • 死亡:应用挂了,他就死亡了。

3.具体应用

a、 实现Servlet之间的数据共享

概念:域(范围)对象。向ServletContext中存放的属性,存活范围就是应用范围。ServletContext叫做应用范围的域对象。

方法:

        void setAttribute(String name,Object value):向域对象中存属性
        Object getAttribute(String name):从域对象中取属性
        void removeAttribute(String name):从域对象中删除属性

b、获取WEB应用的初始化参数

  • 配置全局参数:web.xml

      <context-param>
        <param-name>encoding</param-name>
        <param-value>gbk</param-value>
      </context-param>
    <context-param>
        <param-name>aaa</param-name>
        <param-value>bbb</param-value>
    </context-param>
    
  • 获取全局参数:用ServletContext

    //获取某个参数
    ServletContext context = getServletContext();
    String paraName = context.getInitParameter("aaa");
    System.out.println(paraName);
    //获取所有参数
    Enumeration<String> paraNames = context.getInitParameterNames();
    while (paraNames.hasMoreElements()) {
        String paraName1 = (String) paraNames.nextElement();
        System.out.println("参数名:"+paraName1+"参数值:"+context.getInitParameter(paraName1));
    }
    
  • 实现Servlet的转发。

    客户端————>Demo1————>Demo2
    我找你借钱,你没钱,你找他借钱给我

  • 读取各种配置文件的方式

Servlet学习笔记(四)-----使用Servlet处理用户注册和登陆

1.       首先是login.html页面,代码如下:function valid(form){        if(form.username.value.length==0)    {   ...
  • huanghui22
  • huanghui22
  • 2004年08月28日 10:14
  • 8067

Servlet对文件的读写操作

(1)如何在serlvet中读取文件的内容 package com.tsinghua; import java.io.*; import javax.servlet.http.*; publi...
  • u010870518
  • u010870518
  • 2014年09月01日 09:08
  • 2261

servlet 学习书籍

入门不错的我建议你看《Head First Servlet&JSP》,这本书同时也是SCWCD的官方指定教材。 另外强烈推荐张孝祥同志的两本书(呵呵,我不是书拖哈),一本是《深入体验Java W...
  • shangguanwuxi
  • shangguanwuxi
  • 2014年05月27日 08:39
  • 3526

servlet的一个小项目(四)

servlet的一个小项目(四)ps:这个笔记用的是韩顺平老师的项目。 稍稍改动了一点。使用session://session 案例---如何得到session/和在session中添加属性pack...
  • Leo_cumt
  • Leo_cumt
  • 2017年02月14日 17:06
  • 369

servlet图片上传

很多人在做网站的时候都会使用一些图片,那么图片是如何上传的呢?对于使用JSP的新手来说这可能会是一个很困扰的问题,其实这个问题不难,我们可以借助相关的组件来实现这个功能。 这里提供一个简单的思路: ...
  • u010799162
  • u010799162
  • 2014年12月05日 15:02
  • 3111

Servlet的一个简单调用

通过JSP页面的a标签,表单来调用doGet()方法,doPost()方法 helloServlet.java import java.io.IOException; import java.io...
  • molu_chase
  • molu_chase
  • 2016年08月16日 23:42
  • 2199

Servlet常用操作(基础)

本文主要介绍servler的基本使用操作,是一些非常基础的知识,主要掌握servlet作用域、servlet映射、请求转发、ServletConfig配置、ServletContext等的使用,最后以...
  • sdksdk0
  • sdksdk0
  • 2016年07月19日 10:38
  • 3504

配置servlet时/和/*的区别

 一、/  会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url /* 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和...
  • rongxiang111
  • rongxiang111
  • 2016年11月02日 15:58
  • 2047

我学习servlet的体会

我个人一直认为,学习servlet需要集合tomcat的源码一起看(如果你使用其他的servlet容器,当然可以看其他容器相应的源码).个人觉得学习servlet有几点需要注意,我觉得把这几点弄明白了...
  • jimmee
  • jimmee
  • 2008年03月04日 23:29
  • 967

Java Servlet实现的三种方式

ServletServlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的Servlet程序。Tomcat容器等级T...
  • zhiaini06
  • zhiaini06
  • 2016年10月04日 14:20
  • 4927
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:servlet
举报原因:
原因补充:

(最多只允许输入30个字)