案例一:tomcat9、jdk1.8

 1.eclipse创建web项目

  1)创建一个Dynamic web project,名字为Servlet_hjh

  2)在src下创建一个包,为com.hjh.day0306

  3)在包下创建一个servlet类,为MyServlet

  4)在WEB-INF目录下,创建一个web.xml文文件

   

2.MyServlet类代码如下

 package com.hjh.day0306;

 import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; //1、创建一个servlet,继承HttpServlet
public class MyServlet extends HttpServlet{ //2、实现doGet()方法,如果以get方式提交的话,调用这个方法来处理请求
public void doGet(HttpServletRequest req,HttpServletResponse rep) throws ServletException,IOException{
System.out.println("get");
} //2.实现doPost()方法,如果以post方式提交的话,调用这个方法来处理请求
public void doPost(HttpServletRequest req,HttpServletResponse rep) {
System.out.println("post");
} }

3.web.xml文件配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Servlet_hjh</display-name> <servlet>
<!-- 给servlet取一个名字,一般和我们写的servlet类名一样 ,注意没有斜杠"/" -->
<servlet-name>MyServlet</servlet-name>
<!-- 给出当前servelt类的权限类名,用于搜索到具体的servlet类, 注意是用".",不是斜杠"/" -->
<servlet-class>com.hjh.day0306.MyServlet</servlet-class>
</servlet> <servlet-mapping>
<!-- 这里的servlet-name和上面的要保持一致,注意没有斜杠"/" -->
  <servlet-name>MyServlet</servlet-name>
<!-- 浏览器中通过url-pattern,找到servlet-name,然后找到具体的类 -->
  <url-pattern>/first</url-pattern>
</servlet-mapping> </web-app>

4、启动服务器,在浏览器中输入以下url,按下回车键

title显示为

5、查看eclipse的输出结果

到此,案例一结束。

案例二:ServletConfig对象及其方法

1.eclipse创建web项目

  1)创建一个Dynamic web project,名字为Servlet_hjh

  2)在src下创建一个包,为com.hjh.day0307

  3)在包下创建一个servlet类,为ServletTest01.java

  4)在WEB-INF目录下,创建一个web.xml文文件

2.ServletTest01.java代码如下:

 package com.hjh.day0307;

 import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class ServletTest01 extends HttpServlet {
private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest req,HttpServletResponse rep) throws IOException,ServletException{
System.out.println("doGet");//doGet ////获取servlet的名称,也就是我们在web.xml中配置的servlet-name
System.out.println(this.getServletConfig().getServletName());//ServletTest01
System.out.println(this.getServletName());//ServletTest01 //getServletContext(); //获取ServletContext对象,该对象的作用看下面讲解
System.out.println(this.getServletConfig().getServletContext());//org.apache.catalina.core.ApplicationContextFacade@c5b11
System.out.println(this.getServletContext());//org.apache.catalina.core.ApplicationContextFacade@c5b11 //getInitParameterNames(); //获取在Servlet中所有初始化参数的名字,也就是key值,可以通过key值,
//来找到各个初始化参数的value值。注意返回的是枚举类型
System.out.println(this.getInitParameterNames());//java.util.Collections$3@1695784
System.out.println(this.getServletConfig().getInitParameterNames());//java.util.Collections$3@6bcd8d Enumeration<String> initParamName = this.getServletConfig().getInitParameterNames();
while(initParamName.hasMoreElements()) {
String name = initParamName.nextElement();
System.out.println(name);//name age
//getInitParameter(name)方法,通过给定的参数key,获取对应的value
System.out.println(this.getInitParameter(name));//tom 18
System.out.println(this.getServletConfig().getInitParameter(name));//tom 18
}
} public void doPost(HttpServletRequest req,HttpServletResponse rep) throws IOException,ServletException{
System.out.println("doPost");
}
}

3.web.xml文件配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Servlet_hjh</display-name> <!-- 第二个案例配置开始 -->
<servlet>
<!-- 给servlet取一个名字,一般和我们写的servlet类名一样 ,注意没有斜杠"/" -->
<servlet-name>ServletTest01</servlet-name>
<!-- 给出当前servelt类的权限类名,用于搜索到具体的servlet类, 注意是用".",不是斜杠"/" -->
<servlet-class>com.hjh.day0307.ServletTest01</servlet-class> <!-- 给servlet类的参数设置初始值 ,注意这个标签放的位置,是放在Servlet标签中的-->
<init-param>
<!-- 参数名1 -->
<param-name>name</param-name>
<!-- 参数值1 -->
<param-value>tom</param-value>
</init-param>
<init-param>
<!-- 参数名2 -->
<param-name>age</param-name>
<!-- 参数值12 -->
<param-value>18</param-value>
</init-param>
</servlet> <servlet-mapping>
<!-- 这里的servlet-name和上面的要保持一致,注意没有斜杠"/" -->
<servlet-name>ServletTest01</servlet-name>
<!-- 浏览器中通过url-pattern,找到servlet-name,然后找到具体的类 -->
<url-pattern>/test01</url-pattern>
</servlet-mapping>
<!-- 第二个案例配置完毕 --> </web-app>

4、启动服务器,浏览器中输入,按下回车键访问,

然后到eclipse中查看输入结果如下

      

案例三:ServletContext对象

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Servlet_hjh</display-name> <servlet>
<servlet-name>ServletTest02</servlet-name>
<servlet-class>com.hjh.day0307.ServletTest02</servlet-class>
</servlet> <!-- 4、记住context-param标签的放置位置,为web-app标签对中 -->
<context-param>
<!-- 可以在servlet类中通过getServletContext().getInitParameter("name"),获取对应的值hjh -->
<param-name>name</param-name>
<param-value>hjh</param-value>
</context-param>
<context-param>
<!--4、 可以在servlet类中通过getServletContext().getInitParameter("age"),获取对应的值22 -->
<param-name>age</param-name>
<param-value>25</param-value>
</context-param> <servlet-mapping>
<servlet-name>ServletTest02</servlet-name>
<url-pattern>/test02</url-pattern>
</servlet-mapping> </web-app>

java代码:

package com.hjh.day0307;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Set; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class ServletTest02 extends HttpServlet{ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest req,HttpServletResponse rep) throws ServletException,IOException{
//1、获取ServletContext对象,并在公共区域存放了一个键值对数据(key:name;)
/*getServletContext().setAttribute("name", "hjh");
System.out.println(getServletContext().getAttribute("name"));//hjh
System.out.println("---------------------------setAttribute()与getAttribute()------------------------------------------------");
*/ //2、getServletContext().getInitParameter("name")获取web.xml文件中配置的name对应的value值置
/* System.out.println(getServletContext().getInitParameter("name"));//hjh
System.out.println(getServletContext().getInitParameter("age"));//22
*/ //3、通过指定的key,来删除内容,需配合中的方法使用,先设置后删除
/* getServletContext().removeAttribute("name");
System.out.println(getServletContext().getAttribute("name"));//null
*/ //4、通过getInitParameterNames()来获取在web.xml中配置的参数key,返回一个枚举类型,通过遍历枚举来获取对应的value置
/*Enumeration<String> en = getServletContext().getInitParameterNames();
while(en.hasMoreElements()) {
String name = en.nextElement();
System.out.println(getServletContext().getInitParameter(name));//hjh 25
}
*/ //5、获取web项目指定资源的绝对路径,getServletContext().getRealPath("资源文件相对路径"); 输出为D:\tomcat-9.0\webapps\Servlet_hjh\WEB-INF\web.xml
//System.out.println(getServletContext().getRealPath("/WEB-INF/web.xml")); //6、获取web项目下指定资源的内容,返回的是字节输入流。InputStream getResourceAsStream(java.lang.String path)
/* InputStream ins = getServletContext().getResourceAsStream("/WEB-INF/web.xml");
//字节流转换成字符流,并指定编码格式为utf-8
InputStreamReader isr = new InputStreamReader(ins,"utf-8");
//使用字符缓冲流进行输出,有readine()方法,输出为web.xml文件内容
BufferedReader br = new BufferedReader(isr);
String str = null;
while((str = br.readLine())!=null) {
System.out.println(str);
}
*/ //getResourcePaths(相对路径),获取指定路径下的所有内容(文件和目录)。
Set set = getServletContext().getResourcePaths("/WEB-INF");
Iterator it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
/*输出如下:
* /WEB-INF/lib/
/WEB-INF/web1.xml
/WEB-INF/classes/
/WEB-INF/web.xml
* */ } public void doPost(HttpServletRequest req,HttpServletResponse rep) throws ServletException,IOException {
System.out.println("doPost");
} }

Servlet入门小案例的更多相关文章

  1. 02SpringMvc_springmvc快速入门小案例(XML版本)

    这篇文章中,我们要写一个入门案例,去整体了解整个SpringMVC. 先给出整个项目的结构图:

  2. Hibernate的介绍及入门小案例

    1.Hibernate的诞生 在以前使用传统的JDBC开发应用系统时,如果是小型应用系统,并不觉得有什么麻烦,但是对于大型应用系统的开发,使用JDBC就会显得力不从心,例如对几十,几百张包含几十个字段 ...

  3. spring boot入门小案例

    spring boot 入门小案例搭建 (1) 在Eclipse中新建一个maven project项目,目录结构如下所示: cn.com.rxyb中存放spring boot的启动类,applica ...

  4. React.js入门小案例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

  5. Spring中AOP的初窥和入门小案例

    AOP:面向切面编程 AOP的主要作用:是为了程序员更好的关注"业务",专心"做事" 加上双引号的意思:所谓业务,是指他的核心,各行业中需要处理的核心事务,核心 ...

  6. 10SpringMvc_springmvc快速入门小案例(注解版本)

    第一步:新建案例工程:

  7. HIBERNATE 入门小案例

    刚刚开始肯定好多人都会问什么是hibernate呢? 那么下面我们就来了解一下什么事hibernate吧! 首先,Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对 ...

  8. SSM-Spring-03:Spring中AOP的初窥和入门小案例

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- AOP:面向切面编程 AOP的主要作用:是为了程序员更好的关注"业务",专心"做 ...

  9. struts2框架快速入门小案例

    struts2快速入门: index.jsp------>HelloAction--------->hello.jsp struts2流程 1.导入jar包 struts2的目录结构: a ...

随机推荐

  1. Pandas -- Merge,join and concatenate

    Merge, join, and concatenate pandas provides various facilities for easily combining together Series ...

  2. windows server2012如何开启mysql远程登录

    开发的首要任务就是要搭建起自己的服务器,下面主要是我这搭建记录下 我的各种环境 服务器为Windows server2012  安装的MySQL数据的版本是5.6.10 ,64位.当然了版本对于安装没 ...

  3. [GO]gtk的windows环境搭建

    首先需要安装一个命令行的工作,我们这里安装的是msys2,直接百度地址然后安装即可,我这里安装的是64位 安装好之后进行该软件源配置 修改mirrorlist.msys ## Primary ## m ...

  4. CodeForces 540D Bad Luck Island (DP)

    题意:一个岛上有石头,剪刀和布,规则就不用说了,问你最后只剩下每一种的概率是多少. 析:很明显的一个概率DP,用d[i][j][k]表示,石头剩下 i 个,剪刀剩下 j 个,布剩下 k 个,d[r][ ...

  5. Hadoop压缩之CompressionCodecFactory

    1.CompressionCodecFactory简介 当在读取一个压缩文件的时候,可能并不知道压缩文件用的是哪种压缩算法,那么无法完成解压任务.在Hadoop中,CompressionCodecFa ...

  6. 深入理解java虚拟机(十一) 方法调用-解析调用与分派调用

    方法调用过程是指确定被调用方法的版本(即调用哪一个方法),并不包括方法执行过程.我们知道,Class 文件的编译过程中并不包括传统编译中的连接步骤,一切方法调用在 Class 文件调用里面存储的都只是 ...

  7. Opengl中的GLUT下的回调函数

    void glutDisplayFunc(void (*func)(void)); 注册当前窗口的显示回调函数 参数: func:形为void func()的函数,完成具体的绘制操作 这个函数告诉GL ...

  8. Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析

    Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析 Linq的四种生成运算 DefautIfEmpty,Empty,Range,Repeat 也就是给我们初始化 ...

  9. jmeter接口测试注意点

    1:许多接口访问前会鉴权,不能直接访问.需要给线程组加上cookies管理. 2:第二个接口的入参是第一个接口的返回,需要先调第一个接口,在第一个接口后加后置处理器,如正则表达式提取器,提取参数供后面 ...

  10. python 批量创建文件

    # coding:utf8 import os path = "D:/Python_mkfile" os.chdir(path)#切换到该目录 ysyl = u"验收文件 ...