JavaWeb 【基础】 IDEA 创建javaweb项目,并使用servelet 开发简单接口

2023-11-16


初学javaweb的时候,通常会遇到很多坑,下面系统的做一个 javaweb项目创建的复习。


这里注意一下,如果要在idea创建javaweb项目需要 IDEA企业版,这里给个破解版的链接,大家自己琢磨下载一个。
https://www.52pojie.cn/thread-1062067-1-1.html
吾爱破解里面有很多教程的,不止这一个,自己看着教程去弄。

创建项目

(多图预警)
下载完企业版后。打开,点击new project,(博主用的是IDEA 2018的)
选择 Java Enterprise
配置好sdk , 勾选下方的 Web Application
在这里插入图片描述
如果没有配置tomcat 就点击new -> Tomcat Server ,选择路径
在这里插入图片描述
配置好tomcat后,点击ok,进入下一步,
在这里插入图片描述
输入项目名称,finish

在这里插入图片描述

配置web项目

通常刚刚创建的项目,WEB-INF文件夹下面只有web.xml
需要创建2个文件夹 lib , classes
在这里插入图片描述
在这里插入图片描述
然后打开 project structure
在这里插入图片描述
1.点击 Modules , 选择项目,点击path ,勾选 use modules compile output path,点击 … 选择路径
在这里插入图片描述
选择刚刚创建的 classes 文件
在这里插入图片描述
2个路径都要设置成一样的。然后apply , ok
在这里插入图片描述
在这里插入图片描述
配置tomcat
在这里插入图片描述
localhost 就是本地 ip: 127.0.0.1
一般来说这些配置都不用动,按自己的情况配置。
在这里插入图片描述

创建servelet

src -> new -> servelet

在这里插入图片描述

输入 servelet 名字,创建一个servelet文件:apitest
在这里插入图片描述

添加servelet路径映射

方法一:使用 web.xml 配置servelet映射:

此方法较为麻烦,打开web.xml 添加:

    <!-- 每个servelet 都要有 servlet-mapping 匹配 -->
    <servlet>
        <!-- servelet名字 -->
        <servlet-name>servelet_one</servlet-name>
        <!-- servelet类所在位置 -->
        <servlet-class>apitest</servlet-class>
    </servlet>

    <servlet-mapping>
        <!-- servelet名字 ,这里要和上面的名字一样-->
        <servlet-name>servelet_one</servlet-name>
        <!-- http 访问的映射路径 /api 映射到 apitest 类 -->
        <url-pattern>/api</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>servelet_two</servlet-name>
        <servlet-class>apitest</servlet-class>
    </servlet>
    <servlet-mapping>

        <servlet-name>servelet_two</servlet-name>
        <url-pattern>/api2</url-pattern>
    </servlet-mapping>

上面配置了2个 映射路径 /api 和 /api2 都可以访问到 apitest 这个类
在这里插入图片描述
接下来启动tomcat试一下,点击右上角的 绿色启动按钮。

看到控制台这2句话就代表启动成功。
在这里插入图片描述
启动成功后会自动弹出来一个网页
在这里插入图片描述
这里的END 其实就是 index.jsp 这个文件。
在这里插入图片描述
想要更改默认访问文件,可以在web.xml 添加:

    <welcome-file-list>
        <welcome-file>默认访问的文件</welcome-file>
        <welcome-file>默认文件不存在,则访问这里的文件2</welcome-file>
        <welcome-file>文件2不存在,则访问这里的文件3</welcome-file>
        <welcome-file>同理.....</welcome-file>
    </welcome-file-list>

我们在web文件夹下新建一个test.html 试试
在这里插入图片描述
然后修改web.xml
在这里插入图片描述

重新启动tomcat,自动弹出test.html网页,成功
在这里插入图片描述
OK,回归正题。
启动成功后访问一下刚刚创建的 /api 接口,一片空白,因为我们没有返回任何数据
在这里插入图片描述
回到apitest 类文件,我们做一些修改。
在这里插入图片描述

@WebServlet(name = "apitest")
public class apitest extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //吧POST请求交给GET 方法处理
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置同源策略 (具体自行百度), * 表示通配符,所有ip都可以访问此接口,不安全,这里为了测试而设置的。通常看情况。
        response.setHeader("Access-Control-Allow-Origin", "*");
        //设置访问类型
        response.addHeader("Access-Control-Allow-Method", "POST,GET");
        //设置返回数据类型
        response.setContentType("text/html;charset=utf-8");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Content-type", "text/html;charset=UTF-8");

        response.getWriter().write("访问成功!");
    }
}

重启tomcat,访问 localhost/api , 成功。
在这里插入图片描述

此方法较为麻烦,但是还是有必要记住的。

方法二:使用注解配置servelet映射

注解中添加 urlPatterns 字段。

接下来我们吧web.xml 清空。
在这里插入图片描述
修改 apitest类的注解:
@WebServlet(name = "apitest" ,urlPatterns = "/api")

或者可以简写成
@WebServlet("/api")
整体如下

@WebServlet(name = "apitest" ,urlPatterns = "/api")
public class apitest extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //吧POST请求交给GET 方法处理
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置同源策略 (具体自行百度), * 表示通配符,所有ip都可以访问此接口,不安全,这里为了测试而设置的。通常看情况。
        response.setHeader("Access-Control-Allow-Origin", "*");
        //设置访问类型
        response.addHeader("Access-Control-Allow-Method", "POST,GET");
        //设置返回数据类型
        response.setContentType("text/html;charset=utf-8");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Content-type", "text/html;charset=UTF-8");

        response.getWriter().write("修改注解,访问成功!");
    }
}

重启tomcat ,继续访问 localhost/api
在这里插入图片描述
为了保证真实性,可以ctrl+ F5 强制刷新一下界面,清除缓存。


以上就是javaweb项目的简单例子。有什么错的,大家可以指出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb 【基础】 IDEA 创建javaweb项目,并使用servelet 开发简单接口 的相关文章

  • 连接 Netbeans 和 MySQL 但出现大整数错误

    所以我正在尝试向我的 Netbeans 数据库 即 MySQL 添加新连接 但我遇到了大整数转换错误 有人可以帮助我吗 详细地 我右键单击现有的MySQL 服务器位于 localhost 3306 root 已断开连接 gt gt 选择co
  • Java中使用正则表达式确定字符串是否为URL [重复]

    这个问题在这里已经有答案了 可能的重复 检查字符串是否为有效 URL 的最佳正则表达式是什么 https stackoverflow com questions 161738 what is the best regular express
  • 为什么签名的 Android apk 无法在模拟器上运行

    我已经制作了一个android项目的签名apk 每当我的客户尝试在模拟器上运行它时 他都会遇到以下错误消息 D Android android sdk windows tools gt adb install r abc apk 500 K
  • Java 7 中的 Beans Binding 将被什么取代?

    我在某处读到 我忘记了链接 Beans Binding 将不会成为 Java 7 的一部分 有人知道什么会取代它吗 另外 当前版本的 Java 中是否有 Bean 绑定的替代方案 我建议JGoodies 绑定 https binding d
  • 在 Java 中对多语言环境字符串进行排序

    我正在尝试按字符串字段 国家 地区 对对象列表进行排序 每个国家 地区都使用其母语 阿根廷 澳大利亚 奥地利 例如 我想要做的是让 出现在 A 国家之后 因为字母 对应于拉丁语 B 我正在尝试使用默认的 Collat er 但非拉丁名称仍然
  • Java 应用程序可以检测到调试器已连接吗?

    我知道 jvm 启动选项可以让 jvm 等待附加调试器 这不是我在这里的意思 是否有可能从 Java 代码中也检测调试器的附件 以便我可以例如编写一个正在执行某些操作的 脚本 然后在某个时刻让我的应用程序等待调试器 不会 这些选项是 JVM
  • 使用 iText 在内存上生成在磁盘上生成的 PDF

    我正在从 Java 应用程序生成 PDF 并且效果很好 问题是 PDF 在磁盘上生成为 Document documento new Document PageSize A4 25 25 25 25 PdfWriter writer Pdf
  • 使用 GIN 注入 Class

    有没有办法注入类类型Class
  • 如何在使用 Web 服务时获取会话对象?

    如何在使用 Web 服务时获取会话对象 服务在两个程序之间调用 如何在使用 Web 服务时获取用户会话对象 不可能使用请求对象获取会话 因为当我们谈论服务时不会有请求或响应 如果您正在与JAX WS https jax ws dev jav
  • Java - 在特定日期执行方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在每年的特定日期执行一个方法 我该如何在java中执行此操作 Thanks Chris 按优先顺序排列 The Quartz htt
  • maven默认过滤器目录的好处[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近我发现了maven资源过滤并在文档中看到了一条注释 标准目录布局src main filters 资源过滤器文件 我注意到maven不搜索声
  • Java - 修剪字节数组中的尾随空格

    我有与此类似的字节数组 77 83 65 80 79 67 32 32 32 32 32 32 32 大致等于 M S A P O C when printed as chars 现在我想修剪尾随空白 使其看起来像 77 83 65 80
  • 多少次函数调用会导致堆栈溢出

    你好 Android Java 开发者 当一个函数调用一个函数并且该函数调用另一个函数等等时 有多少次调用 堆栈长度 会让我陷入堆栈溢出 有一般经验法则吗 我问的原因是因为我现在对于我的 5 人纸牌游戏来说哪个更有效 设计明智 解决方案一
  • 注意通知持续时间

    是否可以将抬头通知的持续时间设置为无限 现在它只显示 5 秒 已经尝试过不同的事情 例如更改类别 但持续时间始终为 5 秒 这是我的代码 Notification notification notificationBuilder setCa
  • JavaFX:在 WebView img 标签中未加载本地图像

    以下是我的代码 一切安好 我可以加载远程页面 我可以放置 HTML 内容 但我的img标签显示一个X标志表示无法加载图像 Note 我的图像与类位于同一个包中JavaFX在 Smiley 文件夹中 我可以列出所有图像 这意味着路径没有问题
  • 线程缓存和 Java 内存模型

    我正在尝试了解 Java 内存模型和线程 据我了解 每个线程都有 主 内存的本地副本 因此 如果一个线程尝试更改int变量 例如某个对象的变量 它会缓存int变量 如果它更改它 其他线程可能看不到更改 但是如果线程缓存一些对象而不是 int
  • 在Android中创建自定义按钮类

    我正在尝试为我的 Android 应用程序创建自定义按钮类 public class TicTacButton extends Button 我已经在里面设置了所有构造函数TicTacButton并创建了自定义方法和属性 在我的主要活动中
  • 使用 Jsoup 选择没有类的 HTML 元素

    考虑一个像这样的 html 文档 div p p p p p class random class name p div 我们怎样才能选择所有p元素 但不包括p元素与random class name class Elements ps b
  • 无法使用 Struts 2 重定向 JSP 文件并显示值

    我创建了一个简单的程序 使用文本字段获取用户的名字和姓氏 但问题是 当我单击提交按钮时 我无法将其重定向到另一个显示用户名字和姓氏的 jsp 文件 这是我的HelloAction class package com novamsc trai
  • Struts2 中有多种结果类型?

    我有一个使用 Tiles 的 Struts2 应用程序 如何在操作映射中获取多种结果类型 因为我需要将de输出设置为JSON数据 并且同时Tiles 我努力了

随机推荐

  • openblas 第二弹: openblas Android版调用和编译

    1 编译 如果需要在Android下使用openblas 则需要编译Android版本的openblas a文件进行调用 1 openblas的编译时主要参考链接 参考链接一 参考链接二 具体细节太久了 已经忘了 下面是编译好的时候的环境变
  • Linux中普通用户和ROOT用户对Java JDK的配置

    Linux中对对各种工具文件不需要想Windows中似的 还要先一步一步的安装 有的还需要配置环境变量 比如Windows对Java的安装过程 在Linux中 使用指令 tar zxvf 文件名 注意空格 解压完 tar gz 文件 或使用
  • Spring事务实现原理

    Spring事务的原理是基于AOP实现的 所以流程也可以理解为与AOP一样分为3步 解析切面 织入通知和运行时增强 1 解析切面 Srping事务的是通过 EnableTransactionManagement注解开启的 该注解往IoC容器
  • 【逆向】使用CE查找Android中变量的偏移

    0x00 准备工作下载Cheat Engine以及调试器服务端 https www cheatengine org index php 夜神模拟器 https www yeshen com 下载安装贪婪洞窟 梦境模式 http a 4399
  • 【华为OD机试】路灯照明问题 (C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题目描述 在一条笔直的公路上安装了N个路灯 从位置0开始安装 路灯之间间距固定为100米 每个路灯都有
  • oracle修改块大小设置,oracle性能调整(1)

    1调整数据库服务器的性能Oracle数据库服务器是整个系统的核心 它的性能高低直接影响整个系统的性能 为了调整Oracle数据库服务器的性能 主要从以下几个方面考虑 1 1Oracle 调整操作系统以适合Oracle数据库服务器运行数据库服
  • 利用PicGo+Gitee配置图床

    引言 配置图床 方便我们的使用 比如 我们利用typora写的笔记 直接把发送给别人也可以正常使用 不再会有由于本地图片 而加载不出来图片的情况 此外 图片文件遗失亦可以正常加载出来 因为图片已上传 这里已 Typora Gitee Pic
  • java String(一)—— Java中的String类型

    一 需要理解的代码 import java lang reflect Array import java util ArrayList import java util Arrays import java util HashMap imp
  • DNS服务器正向/反向解析配置

    第四次作业 题目 配置DNS正反向解析 一 正向解析 1 装包 2 配置服务 3 配置服务器 4 测试 1 yum install bind y 2 vim etc named conf 监听53号端口 访问的是本机ip 129 168 2
  • c++命名空间

    命名空间 主要解决全局变量的冲突 内部不允许私有变量 所有变量都是公有的 namespace data int x 10 data x 为域作用符 直接使用等同于使用全局变量 不存在就是0 不包含匿名命名空间内变量 同一个文件引用stati
  • 相见恨晚的办公插件合集(二)

    之前有分享过一些办公的插件 如不坑盒子 打工人插件 易用宝等 下面就简单的介绍一下上面的几个神器后再补充一些其它办公神器吧 不坑盒子 word wps 这是一个非常好用的插件工具 专门应用在Word文档和wps 支持Office 2010以
  • 拓数派入选中国信通院 “铸基计划”「高质量数字化转型产品及服务全景图」

    7 月 27 日 由中国信息通信研究院 以下简称 中国信通院 主办的 2023 数字生态发展大会 暨中国信通院 铸基计划 年中会议在京召开 本次大会深度展示了中国信通院在数字化领域的工作成果 并正式发布了 高质量数字化转型产品及服务全景图
  • GUI基础知识

    GUI编程 1 简介 图形用户界面 Graphical User Interface 又称图形用户接口 是指采用图形方式显示的计算机操作用户界面 GUI的核心技术 AWT Swing 2 Awt 2 1 AWT简介 AWT Abstract
  • springboot报错Could not autowire. No beans of ‘RedisConnectionFactory‘ type found

    这个报错提示是因为springboot升级到2 6 9以后版本就会出现 报错界面 其实上面报错不影响程序使用 但是总是觉得别扭 提供3种解决方式 第一种方案 springboot版本降到2 6 9或以下 第二种方案 通过idea设置不提示该
  • Unity&Webform(2):自定义LifetimeManager和TypeConverter使Unity从HttpContext中取值注入WebForm页面...

    上一篇 Unity WebForm 1 自定义IHttpHandlerFactory使用Unity对ASP NET Webform页面进行依赖注入中让Unity和WebForm结合在一起 通过使用HttpHandlerFactory实现了对
  • 模式匹配算法

    下面分别介绍 朴素模式匹配算法 和 改进模式匹配算法 KMP 朴素模式匹配算法思想 从目标S中的第一个字符开始和模式T中的的第一个比较 用 i 和 j 分别指示S串和T串中正在比较字符的位置 若相等 则继续逐个比较后续字符 否则 从S 的第
  • 【PYTHON】conda/pip一些命令记录

    查看环境 conda info env conda env list 删除某环境 conda remove n
  • 数据结构:设计实现抽象数据类型“有理数”内容

    题目 设计实现抽象数据类型 有理数 内容 设计并上机实现抽象数据类型 有理数 有理数的基本操作包括 两个有理数的加 减 乘 除等 包括有理数的创建和输出 要求 有理数的类型 我们可以构造成一个结构体类型 这个结构体由两个整数构成 分别表示有
  • 深入理解设计原则之最少知识原则/迪米特法则(LOD)【软件架构设计】

    系列文章目录 高级C 并发线程编程 C 高性能优化编程系列 软件架构设计系列 深入理解设计模式系列 不怕别人瞧不起 就怕自己不争气 Are not afraid to look down upon he was afraid his dis
  • JavaWeb 【基础】 IDEA 创建javaweb项目,并使用servelet 开发简单接口

    目录 创建项目 配置web项目 创建servelet 添加servelet路径映射 方法一 使用 web xml 配置servelet映射 方法二 使用注解配置servelet映射 初学javaweb的时候 通常会遇到很多坑 下面系统的做一