idea 添加servlet依赖_使用 Intellij IDEA 新建一个 Servlet 项目

2023-05-16

写在前面

上一篇文章 在 Tomcat 上部署你的第一个 Servlet 应用 使用最原始的命令行方式编译 Servlet 类,并且部署到 tomcat 安装目录下的 webapps 文件夹下。但是实际情况下,我们现在的工作已经十分依赖集成开发工具 IDEA 了,本文就借助 IDEA 创建一个 Servlet ,并且在 IDEA 工具内通过 tomcat 来启动服务和本地调试。

项目地址

git clone https://gitee.com/kendoziyu/code-servlet-parent.git

其中,develop-servlet 就是本文的项目。

1.创建项目

首先 File -> New -> Project... 打开创建项目窗口

接着就是给你的项目找一个合适的名字和合适的路径,我的项目命名为 develop-servlet

点击 Finish 完成创建,并且在新的窗口中打开项目。

自动创建的模板,为我们创建了以下文件:

/web/WEB-INF/web.xml

/web/index.jsp

*自定义修改

首先,这个 web 文件夹的取名,不太符合我的习惯,我更喜欢命名为 webapp。

右击 web 文件夹 --> Refactor --> Rename...

另外,当前 3.1 是稳定版本,4.0 是 alpha 版本,所以我们稍稍改动一下 web.xml,把 servlet 版本改为 3.1

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1">

2.添加 Servlet 依赖

在 tomcat 安装目录下的 lib 下有 servlet-api.jar,而我的 tomcat 安装目录是 D:\server\apache-tomcat-9.0.39

接着我们在 idea 中添加依赖库,我们先通过 File --> Project Structure... 打开窗口:

D:\server\apache-tomcat-9.0.39\lib\servlet-api.jar

3.创建 LoginServlet

package coderead.servlet;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

/**

* JSP 页面的 Servlet

*

* @author kendoziyu

* @since 2020/10/21 0021

*/

public class LoginServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.getWriter().write("

Hello World

");

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

super.doPost(req, resp);

}

}

4. 配置 web.xml

我们声明一个名为 loginServlet 的 servlet 对应类 coderead.servlet.LoginServlet,并且配置它的拦截 url 地址为 /Login

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1">

loginServlet

coderead.servlet.LoginServlet

loginServlet

/Login

5. 添加运行项

我们打算用 tomcat 的方式来运行我们的项目,首先我们要 Add Configuration...

然后在 Run/Debug Configuration 窗口,选择 Tomcat Server -> Local

接着我们就需要设置应用服务器 Applicaiton Server:

点击 Configure... 打开了 Tomcat Server 窗口,我选择了一下本地 Tomcat 安装目录 D:\server\apache-tomcat-9.0.39,并选择 Ok

此时,在 Run/Debug Configuration 窗口出现一个 Warning: No artifacts configured

点击 Fix ,如果你的 IDEA 版本没有出现这个警告和 Fix 按钮,那也请不要慌张,选择 File -> Project Structure 即可。

6. 配置 Web Module

如果你不是用 idea 直接创建的 Web Application(比如是用 git clone 下来的代码,或者你自己手动创建的 webapp 文件夹),那你可以看一下,你的 webapp 文件夹上并没有一些“特殊的记号”。此时我们可以先添加 Web 模块,后创建 Artifact,这样会快很多。

如果你的 webapp 文件夹上已经有一个“小蓝点”,那你可能可以直接跳至第 7 步,前提是你确定你的配置是正确的。在 Project Structure 窗口下,选择 Modules

添加后效果如下图所示,接着我们要修改 Web Module Deployment Descriptor 和 Web Resource Directory。

鼠标悬浮至 + 和 - 下方的 >>,会出现编辑按钮:

编辑 Web Module Deployment Descriptor 选择 项目根目录路径\webapp\WEB-INF\web.xml,版本选择 3.1 ,和 web.xml 中的版本一致。

编辑 Web Resource Directory,选择项目根目录下的 webapp 目录

7. 创建 Artifact

如果你做了 6 步,那么你可以直接选择 Create Artifact。

如果你不是用 Create Artifact 方式,那就需要你自己选择 Artifact 的类型:

如果选 Web Application: Exploded,这个是以文件夹形式(War Exploded)发布项目,选择这个,发布项目时就会自动生成文件夹在指定的 output directory;

如果选 Web Application: Archive,就是 war 包形式,每次都会重新打包全部的,将项目打成一个 war 包,放到指定位置;

8. 部署

再次选择 Add Configuration... ,打开 Run/Debug Configurations, + -> Tomcat Server -> Local ,切换到 Deployment,发现已经把 Artifact 自动添加进去了。

这里的 develop-servlet 是由第 7 步上面的图片 Artifact - Name 所决定的,同时也会影响 Web 项目的 ContextPath。第 7 步 Artifact 的 Output Directory 最终目录是 develop_servlet,因此 ContextPath 也是 develop_servlet。

也就是说我们应该在浏览器中通过 http://localhost:8080/ 的访问结果为

* 选择输出目录

还是因为我是 git clone 得到的项目,没有配置输出目录,弹出这个报错:

我们可以在 Project Structure 窗口,配置 Project compiler output 为 项目根目录\out

9. jsp 调用 Servlet

首次打开时,会进入 index.jsp,如果没登录,我希望通过 jsp 调用 Servlet。

User: kendoziyu

Date: 2020/10/21

--%>

首页

String loginName = (String) request.getSession().getAttribute("loginName");

%>

if (loginName == null || loginName.isEmpty()) {

%>

去登录

Hello,

不过,此时点击“去登录”,直接跳转 http://localhost:8080/Login,结果 404 找不到页面,稍微改造一下:

方法一:可以修改链接地址为相对地址

去登录

适用场景:当前页面是在 WebRoot 路径下。

方法二:目标 URL 前面加上请求 ContextPath 前缀

首页

String loginName = (String) request.getSession().getAttribute("loginName");

String prefix = request.getContextPath();

%>

if (loginName == null || loginName.isEmpty()) {

%>

去登录

Hello,

10. Servlet 跳转 jsp

方法一: sendRedirect 方式

sendRedirect("/a.jsp");

可以将页面跳转到任何路径,不局限于web应用中,跳转的过程中url地址变化,无法使用request.setAttribute来传递。

方法二:forward 方式

request.getRequestDispatcher("/a.jsp").forward(request.response);

url地址不变,只能跳转到本web应用中的页面上。可以用 request.setAttibute 方法

我们改写一下 LoginServlet

package coderead.servlet;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

/**

* JSP 页面的 Servlet

*

* @author kendoziyu

* @since 2020/10/21 0021

*/

public class LoginServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// response.getWriter().write("

Hello World

");

request.getRequestDispatcher("/login.jsp").forward(request, response);

}

@Override

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.getSession().setAttribute("loginName", request.getParameter("username"));

response.sendRedirect("index.jsp");

}

}

login.jsp

登录

username:

password:

参考文章

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

idea 添加servlet依赖_使用 Intellij IDEA 新建一个 Servlet 项目 的相关文章

  • servlet实现文件上传

    上传文件满足条件 1 需要有个表单 表单里面有个input类型为file的上传域 2 请求方法必须是POST 3 表单需要添加enctype属性 Content Type multipart form data 告知服务器提交数据的MIME
  • 进阶java大师之路,泛型在hashmap上的灵活运用

    由于 公司的试用的框架上 存在大量的hashmap的创建 产生大量的I O 以及内存的消耗 所以 抽了点时间 看书 effective java 这本书 同时 也从项目的作者 framework 上学习 吸取 最终写出了 符合生产的方案 存
  • JavaCollection集合

    5 Collection集合 5 1 Collection集合概述 是单列集合的顶层接口 它表示一组对象 这些对象也称Collection元素 JDK不提供此接口的直接实现 它提供更具体的子接口 Set 和 List 实现 package
  • IDEA 启动失败(因为修改了vmoptions后无法启动)

    本人亲历 找过好多方法 才解决的 包括但不限于 找 vmoption文件的时候 说是在C盘 死活找不到 不过已经解决了 也成功了 还成功添加了破解码 后面出文 想添加破解码 要修改vmpotion 结果直接启动不了了 然后重启IDEA的时候
  • List的size为1,没有内容,解决:stream过滤空值

    List
  • Qt小项目2 图片查看器

    头文件 ifndef WIDGET H define WIDGET H include
  • Servlet 和 Cookie-Session 学习笔记(基础)

    简单来说 是运行在服务器端的 Java 程序 它作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层 用处 使用 Servlet 您可以收集来自网页表单的用户输入 呈现来自数据库或者其他
  • 解决${}EL表达式不起作用,无法获取数据,页面显示内容出错

    问题 EL表达式无法获取数据 解决办法 在jsp页面加入 这句话表示 可以使用EL 表达式 效果
  • 利用Java EE相关技术实现一个简单的Web聊天室系统

    利用Java EE相关技术实现一个简单的Web聊天室系统 1 编写一个登录页面 登录信息中有用户名和密码 分别用两个按钮来提交和重置登录信息 2 通过请求指派来处理用户提交的登录信息 如果用户名为本小组成员的名字且密码为对应的学号时 跳转到
  • IDEA如何进行debug调试

    IDEA如何进行debug调试 第一步 设断点 打开debug 第二步 使用Debug调试的功能键 程序调试 相信是所有程序员必经之路 因为程序写出来是不可能没有错误的 当然除了非常简单的一些程序之外 相信大家肯定使用过不同的编译软件 都有
  • IDEA去除掉虚线,波浪线,和下划线实线的方法

    推荐一下个人的公众号 终码一生 专注于Java技术学习 开源项目分享和常见问题解决等 喜欢的小伙伴可以关注下 感谢大家的支持 初次安装使用IDEA 总是能看到导入代码后 出现很多的波浪线 下划线和虚线 这是IDEA给我们的一些提示和警告 但
  • maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目

    maven学习笔记 一 什么是maven Maven是一个项目管理工具 它包含了一个项目对象模型 Project Object Model 一组标准集合 一个项目生命周期 Project Lifecycle 一个依赖管理系统 Depende
  • IDEA java.lang.NullPointerException (no error message)

    今天在不停启动debug 停止debug后无法再启动debug 提示java lang NullPointerException no error message 经百度 删除 project下 gradle无效 恢复代码后无效 且未更改配
  • jsp+servlet+ajax实现登录

    该案列使用jsp servlet ajax实现登录 页面简洁大方 弹框都是封装的插件 整体案列采用三层的模式 链接数据库方面用的是dbcp的链接池 数据库时mysql 运行效果如下图 下载地址 jsp servlet ajax实现登录案例
  • this调用本类的其他构造器

    Student类 package Java project 1 public class Student private String name private String schoolName public Student public
  • 5. handle方法详解-handler获取

    文章目录 1 概览 2 handle方法回顾 3 HandlerMappings继承关系 4 getHandlerInternal 4 1 RequestMappingInfoHandlerMapping getHandlerInterna
  • Failed to resolve org.junit.platform:junit-platform-launcher:1.9.3

    springboot 跑 unit test 的时候 如果报错如题的话 可以更改idea 里的 Settings gt HTTP Proxy 配置为 Auto detect proxy settings
  • 配置文件中的$和@

    配置文件中的 和 0 前言 借鉴文章 https blog csdn net Saintmm article details 124603343 https blog csdn net ster ben article details 11
  • 基于动态代理实现接口耗时计算

    对于动态代理模式 Java的反射机制提供了支持 耗时计算写在主逻辑代码存在很强的耦合性 这里提供了一种解耦合的方式去实现 在Spring框架aop也用了这一技术 登录接口 public class UserServiceImpl imple
  • JavaWeb——第五章 Servlet

    第五章 Servlet 一 Servlet简介 1 1 动态资源和静态资源 1 2 Servlet简介 二 Servlet开发流程 2 1 目标 2 2 开发过程 三 Servlet注解方式配置

随机推荐