【Java Servlet 开发系列之二】创建WebApp详细步骤,通过Servlet实现http简单交互

简介:

创建一个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. <?xml version="1.0" encoding="ISO-8859-1"?> 
  2.  
  3. <web-app xmlns="http://java.sun.com/xml/ns/javaee" 
  4.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  5.   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  6.                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
  7.   version="3.0" 
  8.   metadata-complete="true"> 
  9.  
  10. </web-app> 

 

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

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

 


  
  
  1. <Context reloadable="true"> 

 

         5.编写我们第一个Servlet:

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

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

 

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

 


  
  
  1. import java.io.IOException; 
  2.  
  3. import javax.servlet.ServletException; 
  4. import javax.servlet.http.HttpServlet; 
  5. import javax.servlet.http.HttpServletRequest; 
  6. import javax.servlet.http.HttpServletResponse; 
  7.  
  8. /** 
  9.  * @author Himi 
  10.  */ 
  11. public class HelloServlet extends HttpServlet { 
  12.  
  13.     private static final long serialVersionUID = 1L
  14.  
  15.     @Override 
  16.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  17.             throws ServletException, IOException { 
  18.         // TODO Auto-generated method stub 
  19.         super.doGet(req, resp); 
  20.     } 
  21.  
  22.     @Override 
  23.     protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
  24.             throws ServletException, IOException { 
  25.         // TODO Auto-generated method stub 
  26.         super.doPost(req, resp); 
  27.     } 
  28.  

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

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

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

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

 


  
  
  1. @Override 
  2.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
  3.             throws ServletException, IOException { 
  4.         PrintWriter pw  = resp.getWriter();//得到一个输出流 
  5.         //写给Client端一个简单网页信息 
  6.         pw.println("<html><head></head><body>Server:Hello Client~</body></html>"); 
  7.         pw.flush(); 
  8.         pw.close(); 
  9.     } 

 

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

 

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

 


  
  
  1. <?xml version="1.0" encoding="ISO-8859-1"?> 
  2.  
  3. <web-app xmlns="http://java.sun.com/xml/ns/javaee" 
  4.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  5.   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  6.                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
  7.   version="3.0" 
  8.   metadata-complete="true"> 
  9.     <servlet> 
  10.         <servlet-name>servlethimi</servlet-name> 
  11.         <servlet-class>HelloServlet</servlet-class> 
  12.     </servlet> 
  13.  
  14.     <servlet-mapping> 
  15.         <servlet-name>servlethimi</servlet-name> 
  16.         <url-pattern>/himi</url-pattern> 
  17.     </servlet-mapping> 
  18.  
  19.     <servlet-mapping> 
  20.         <servlet-name>servlethimi</servlet-name> 
  21.         <url-pattern>/xiaominghimi</url-pattern> 
  22.     </servlet-mapping> 
  23.  
  24. </web-app> 

这里大概解释一下:

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
< html >< head ></ head >< body >Server:Hello Client~</ body ></ html >

OK,数据获取正常;










本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/969795,如需转载请自行联系原作者
目录
相关文章
|
19天前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
96 7
|
1月前
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
64 5
|
25天前
|
人工智能 Java 定位技术
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
本文以原理与示例结合的形式讲解 Java 开发者如何基于 Spring AI Alibaba 框架玩转 MCP。
690 86
|
1月前
|
Linux C语言 iOS开发
C语言结合AWTK开发HTTP接口访问界面
这样,我们就实现了在C语言中使用libcurl和AWTK来访问HTTP接口并在界面上显示结果。这只是一个基础的示例,你可以根据需要添加更多的功能和优化。例如,你可以添加错误处理机制、支持更多HTTP方法(如POST、PUT等)、优化用户界面等。
235 82
|
24天前
|
人工智能 Java 定位技术
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
本文详细讲解了Java开发者如何基于Spring AI Alibaba框架玩转MCP(Model Context Protocol),涵盖基础概念、快速体验、服务发布与调用等内容。重点包括将Spring应用发布为MCP Server(支持stdio与SSE模式)、开发MCP Client调用服务,以及在Spring AI Alibaba的OpenManus中使用MCP增强工具能力。通过实际示例,如天气查询与百度地图路线规划,展示了MCP在AI应用中的强大作用。最后总结了MCP对AI开发的意义及其在Spring AI中的实现价值。
444 9
|
1月前
|
人工智能 网络协议 API
开发效率翻倍!Apipost这些协议调试秘籍,从HTTP到金融报文全搞定
Apipost是一款强大的API研发管理工具,支持多种协议与数据格式,包括HTTP(s)、WebSocket、SSE、gRPC、TCP及金融协议(如ISO 8583、FIX)。它内置国密算法库,提供HTTP文件秒传、全局参数配置等实用功能。在SSE调试中,可轻松处理AI模型流式响应;WebSocket与Socket.IO实现高效实时通信;GraphQL支持可视化Query编写;TCP模块解决金融报文编码难题;gRPC则具备服务反射与流式调试能力。Apipost不仅简化了多协议切换的复杂性,还自动生成文档,显著提升开发效率,让开发者专注于核心业务逻辑。
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
系统的升级涉及各个架构组件,细节很多。常年累月的修修补补使老系统积累了很多问题。 系统升级则意味着需要repair之前埋下的雷,那为何还要升级,可以考虑以下几个方面 成熟老系统常见问题: 1. 缺乏文档(这应该是大小公司都存在的问题。
645 0
|
Web App开发 存储 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
1.HBase依赖于HDFS,HBase按照列族将数据存储在不同的hdfs文件中;MongoDB直接存储在本地磁盘中,MongoDB不分列,整个文档都存储在一个(或者说一组)文件中 (存储) 2.
783 0
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
已发现2个内存错误,应用名称(kernel:),日志内容(hangzhou-jishuan-DDS0248 kernel: sbridge: HANDLING MCE MEMORY ERROR hangzhou-jis...
904 0
|
Web App开发 前端开发 Java