servlet

1.定义

servlet 是运行在 Web服务器中的小型Java程序,通过HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

2.实现servlet

  • 实现Servlet接口—-如果实现接口,需要把接口里面的方法都实现
  • 继承GenericServlet, HttpServlet类—-如果继承类,不需要把类中的方法都实现
  • 需要web服务器知道java程序不是一个普通的java程序,而是一个servlet
  • 通过配置进行操作,在web项目中web.xml里面进行配置
package com.demo.Servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletDemo_1 extends HttpServlet {

    public void init() throws ServletException {//初始化方法

    }

    protected void service(HttpServletRequest arg0, HttpServletResponse arg1)//运行中方法
            throws ServletException, IOException {
        arg1.getWriter().write("hello servlet");
    }
}
  • 在web项目中的web.xml进行配置,让服务器知道是一个servlet

<servlet>
    <servlet-name>servletDemo_1</servlet-name>
    <servlet-class>cn.itcast.servlet.ServletDemo_1</servlet-class>//class路径
</servlet>
<servlet-mapping>
    <servlet-name>servletDemo_1</servlet-name>
    <url-pattern>/hello</url-pattern>//访问页面名称要加反斜杠
</servlet-mapping>

3.servlet的生命周期

从servlet创建到servlet销毁的过程
* init方法,在servlet创建时候执行这个方法,执行一次,servlet在第一次访问时候创建
* service方法,在每次访问servlet时候会执行这个方法,执行多次
* destroy方法,销毁servlet时候执行这个方法,执行一次

4.相关知识点

  • 提交的方式,调用不同的doXX的方法;get提交调用doGet方法;post提交调用doPost方法
  • 一般用doGet和doPost方法
  • 一般创建servlet时直接继承HttpServlet实现servlet
  • 在服务器启动时候创建servlet
    • 配置文件中,在servlet标签里面添加标签<load-on-startup>正整数的值</load-on-startup>

5.路径配置

  • 完全路径匹配/aa /hello
  • 目录匹配/aa/*
  • 扩展名匹配*.do *.action
  • 优先级:完全路径匹配 > 目录匹配 > 扩展名匹配
  • 绝对路径
第一种:http://ip地址+端口号/文件的路径
<img src="http://127.0.0.1/day07-3/path02/a.jpg"/>
第二种:/项目名称/文件路径
<img src="/day07-3/path01/cc/c.jpg"/>

6.重定向和转发

  • 重定向

    • 使用的是客户端路径
    • 重定向请求两次,使用的是客户端路径,携带项目名称
  • 转发

    • 使用的是服务端路径
    • 转发请求一次,使用的是服务器端路径,不需要携带项目名称

7.ServletConfig对象

获取servlet标签初始化参数


//得到servletconfig对象
ServletConfig config = getServletConfig();
//得到所有的初始化参数名称
Enumeration<String> enumer = config.getInitParameterNames();
//得到每个参数的名称
while(enumer.hasMoreElements()) {
    String name = enumer.nextElement();
    //根据name得到值
    String value = config.getInitParameter(name);
    System.out.println(name+" :: "+value);
}

8.ServletContext对象

获取全局的初始化参数

  • servletContext域对象:范围是整个web项目
  • 存值:setAttribute(String name, Object object)
  • 取值:getAttribute(String name)
//配置全局初始化参数,全局参数不能重名,否则会造成覆盖(后者覆盖前者)
<context-param>
    <param-name>name</param-name>
    <param-value>Tom</param-value>
</context-param>
<context-param>
    <param-name>password</param-name>
    <param-value>1234</param-value>
</context-param>

//获取全局初始化参数值
//得到servletContext对象
ServletContext context = getServletContext();
//根据名称获取值
String key = context.getInitParameter("name");
String value = context.getInitParameter("password");

9.默认servlet

出现404错误,这个效果是由默认的servlet实现的

  • 在tomcat的conf里面找到web.xml,有对默认servlet的配置
<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>//参数
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>//开启服务就启动
</servlet>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
  • 在默认的servlet的初始化参数里面有listings,当把这个参数的值设置成true之后,当直接访问web项目中文件夹时候,会把文件夹里面的所有内容显示出来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值