本站文章均为 李华明Himi 原创,转载务必在明显处注明: 
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/java-servlet/853.html

创建一个webApp详细步骤如下:

1.   在我们的tomcat目录下的webapps 下创建一个自定义目录,作为我们webapp的整个项目目录;这里Himi命名为MyWebApp;

2.然后在 MyWebApp下继续创建一个“WEB-INF”文件夹(必须有),在WEB-INF下创建一个名字为”web.xml”文件(必须有),并且在WEB-INF继续放置一个名为“lib”文件夹(必须有) ,lib下主要用于放置第三方jar包,tomcat自动为我们加载;最后仍旧在WEB-INF中创建一个名为“classes”文件夹(必须有),整个classes文件夹主要用于放置我们编译好的servlet文件;

目录如下图:

3. 第二步中新建的web.xml只需要写入如下内容即可:

1
2
3
4
5
6
7
8
9
10

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">
</web-app>

4. 设置tomcat自动为我们监控目录是否有变化,有变化就自动为我们重新加载,设置方法:

在tomcat目录下,conf/context.xml 打开后将 <Context> 标签加入一个属性,如下:

1
     &lt;Context reloadable="true"&gt;

5.编写我们第一个Servlet:

IDE 新建一个 Java Project,然后在此项目中加入servlet jar包,此jar包为:

xxx(你的tomcat目录)/lib/servlet-api.jar

6. 新建一个类,继承HttpServlet 并且重写doGet, doPost两个函数,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Himi
*/
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
}

OK, doGet和doPost 都有两个参数:

1). HttpServletRequest    表示客户端传过来的一个请求,然后被Tomcat包装成对象;

2). HttpServletResponse   表示对客户端的一个应答,将数据发送给客户端;

这里假设我们客户端使用get方式访问服务器,那么我们稍微修改下get函数如下:

1
2
3
4
5
6
7
8
9

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter pw  = resp.getWriter();//得到一个输出流
//写给Client端一个简单网页信息
pw.println("&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Server:Hello Client~&lt;/body&gt;&lt;/html&gt;");
pw.flush();
pw.close();
}

 

        7. 这里我们虽然编写了一个Servlet,但是无法使用必须通过Tomcat使用,所以我们将刚刚编写的Servlet类找到其对应编译后的.class文件,然后放置我们在tomcat目录下自定义的MyWebApp/WEB-INF/classes文件夹下;

8.修改web.xml让tomcat知道当客户端访问server时候知道什么时候调用使用我们的servlet,将web.xml内容修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
&lt;web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true"&gt;
    &lt;servlet&gt;
        &lt;servlet-name&gt;servlethimi&lt;/servlet-name&gt;
        &lt;servlet-class&gt;HelloServlet&lt;/servlet-class&gt;
    &lt;/servlet&gt;
    &lt;servlet-mapping&gt;
        &lt;servlet-name&gt;servlethimi&lt;/servlet-name&gt;
        &lt;url-pattern&gt;/himi&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
    &lt;servlet-mapping&gt;
        &lt;servlet-name&gt;servlethimi&lt;/servlet-name&gt;
        &lt;url-pattern&gt;/xiaominghimi&lt;/url-pattern&gt;
    &lt;/servlet-mapping&gt;
&lt;/web-app&gt;

这里大概解释一下:

1)  <servlet-name> 标签是给你的servlet起个名字,整个名字是给tomcat来看的;

2) <servlet-class> 对应你编译后的servlet的类名;

3) <url-pattern> 整个标签主要是告诉tomcat,Client端访问我这个servlet而使用的字段是什么;

这里注意两点:

a)  <url-pattern>标签内容要以”/”开头;

b) 每个servlet可以对应很多个访问字段,比如这里我有两个 <servlet-mapping>对应两个访问字段”/himi”,”/xiaominghimi”

到此我们第一个简单的WebApp就完成了,然后我们测试一下;

首先启动tomcat  ,打开终端 startup.sh

然后打开你的safari 在地址栏敲入:

http://localhost:8080/MyWebApp/xiaominghimi

或者:

http://localhost:8080/MyWebApp/himi

都可以正常得到如下内容:

整个网页的源码如下:

1
&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Server:Hello Client~&lt;/body&gt;&lt;/html&gt;

OK,数据获取正常;

【JAVA SERVLET 开发系列之二】创建WEBAPP详细步骤,通过SERVLET实现HTTP简单交互相关推荐

  1. 系统开发系列 之MyEclipse创建WebService详细教程和调用教程(spring框架+maven+CXF框架)

    1 回顾 [系统开发系列 之MyEclipse创建WebService详细教程和调用教程]介绍了使用JWS实现WebService接口的发布和调用,主要涉及的点有: (1)MyEclipse点击Fil ...

  2. java GUI开发中关于卡片式布局详细步骤讲解

    java GUI开发中关于卡片式布局详细步骤讲解 JFrame frame = new JFrame("调课");//首先要申明一个JFrame. JPanel p1 = new ...

  3. 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式(转载)

    源地址:http://doc.chinaunix.net/python/200703/202210.shtml 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式 ...

  4. Java命令学习系列(二)——Jstack

    转载自 Java命令学习系列(二)--Jstack jstack是java虚拟机自带的一种堆栈跟踪工具. 功能 jstack用于生成java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一 ...

  5. C#微信公众号开发系列教程二(新手接入指南)

    此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教 ...

  6. Camera开发系列之二 相机数据回调处理

    章节 Camera开发系列之一-显示摄像头实时画面 Camera开发系列之二-相机预览数据回调 Camera开发系列之三-相机数据硬编码为h264 Camera开发系列之四-使用MediaMuxer封 ...

  7. 大数据系列之:安装pulsar详细步骤

    大数据系列之:安装pulsar详细步骤 一.Pulsar版本和jdk对应关系 二.安装JDK 三.设置和激活jdk环境变量 四.下载和解压Pulsar 五.查看Pulsar目录 六.启动Pulsar ...

  8. 如何实现开发一个企业认证开发版微信服务号的详细步骤

    题目:企业如何实现开发一个企业开发版微信公众号的详细步骤?(以PHP为例进行开发) 先附上一张流程图: 一.首先在微信公众平台官网进行注册登录,打款认证,微信公众平台小程序注册与认证详细过程看链接: ...

  9. Sharepoint2010创建webpart详细步骤

    Sharepoint2010创建webpart详细步骤 1.新建Sharepoint2010空白项目 2.部署为场解决方案 3.添加"新建项" 4.选择"web部件&qu ...

最新文章

  1. mysql 存储过程out,in,inout分别表示什么
  2. 一文看懂自动驾驶中应用的机器学习算法
  3. oracle修改连接数
  4. 关系型数据库的ACID规则
  5. Autodesk Forge Viewer与Forge API Node.js客户端SDK的TypeScript声明文件发布!
  6. 开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源
  7. java守护线程和用户线程的区别
  8. session一致性架构设计
  9. 了解JQuery TextArea的取值与赋值问题
  10. VS下如何配置才能使用 cl 命令行方式编译 C/C++ 程序
  11. Omnibus test
  12. 卡尔曼滤波,高斯函数
  13. html调用mysql数据库表里值,如何从MYSQL数据库正确调用行到HTML表中
  14. 459.重复子字符串
  15. sap crystal reports(水晶报表) 2016 SP7中文破解版
  16. 麦克斯韦电磁场理论基础
  17. 上网账号口令怎么获取_我的路由器上网账号和口令忘记了该怎么办
  18. day02 126邮箱注册思维导图 / 城市电话号码/ qq号登录
  19. CSMA/CD协议最小帧长的思考
  20. react实战笔记172:navigate组件

热门文章

  1. ambari hdfs 启动报错_HDFS 运维常见问题处理
  2. python 多继承 __new___Python3中的__new__方法以及继承不可变类型类的问题
  3. php 不等于 的函数吗,PHP不常见的函数整理
  4. java servlet 输出_JavaWeb中servlet读取配置文件的方式
  5. matlab调用c语言驱动函数,[转载]Matlab调用C语言函数
  6. java窗口how2j_How2J Java 基础
  7. linux如何判断网线插入_斜口钳和网线钳制作网线!
  8. html华为官网静态网页,Web静态页面:华为商城主页
  9. jwt token注销_辩证的眼光搞懂 JWT 这个知识点
  10. linux用户组建立,查看等