我是JSP编程的新手,所以我选择intellij作为我的IDE。
我安装了Intellij Ultimate、oracle的JDK14和Tomcat 9,然后搜索创建新项目。
但是,大多数解释如何创建新 servlet 项目的帖子都这么说
“创建新项目时,您可以在 Java 窗格中的其他库和框架下找到 Web 服务复选框。”
甚至 JetBrains 也在说同样的事情,(https://www.jetbrains.com/help/idea/preparing-to-develop-a-web-service.html),但我找不到它。
当然我检查了我的插件是否启用了。
无论如何,我找到了另一种创建它的方法:选择 Java Enterprise,然后单击“下一步”,从“库和框架”中选中“Web 配置文件”。
但是现在,出现了另一个问题,因为我无法通过右键单击 src 或 src/main/java 来找到“new - servlet 项目”
为什么会发生这些事情?即使我找到了一些创建 servlet 文件的方法,也许还会出现其他类似的问题,我想。
JSP项目有什么先决条件吗?或者只是因为intellij没有被评分?我想知道我的intellij与别人不同的原因。
我发现了这种方式,希望它对你有用,就像对我一样。首先,我建议您添加对 Maven 框架的支持,或者您只需下载创建和管理 servlet 所需依赖项的 JAR 文件
Java Servlet API
。
添加对 Maven 的框架支持
在项目工具窗口中,您必须选择要添加 Maven 框架支持的模块,右键单击它并选择
Add Framework support
。就像这样:
在新窗口中,您只需从可用框架列表中选择 Web 应用程序和 Maven。选择 Web 应用程序时,它会创建一个
web
包及其 web.xml
配置文件。当询问时,接受创建 web.xml 文件以继续。完成这些步骤后,您的项目结构可能如下所示:
向 pom.xml 添加 Java Servlet API 依赖
现在您需要打开
pom.xml
文件。此文件可帮助您添加和管理项目依赖项,因为它允许您从 Apache Maven 存储库检索它们,而不是下载 JAR 文件并将它们手动添加到项目中。您需要添加下一个依赖项:
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
完成上一步后,您的 pom 文件应如下所示:
作为最后一步,我们需要通过按
Project Structure
或通过 Ctrl + Alt + Shift + S
导航来打开 File > Project Structure
设置。在这里,我们将在窗口左侧找到一个 Project Settings
部分。我们需要转到 Facets
,您可能会发现一个名为 Web
的方面。在窗口底部,您应该会看到一个名为 Source Roots
的选项。您必须通过单击复选框来启用它,然后单击 Apply
,最后单击 OK
。您必须确保本节中显示的路径确实是您项目的 src > main > java
文件夹的路径。
完成此操作后,您应该能够转到项目中的任何包并创建 servlet,如下所示:
New > Servlet
。
注意: 如果在创建
pom.xml
文件时遇到语法错误,您唯一需要做的就是将 <groupId></groupId>
标记内容更改为您希望用来标识项目的完全限定名称。
注意:我无法找到一种方法将
src > main > java
文件夹永久配置为源根目录,因此每次关闭并重新打开项目时,您都需要转到Project Structure (Ctrl + Alt + Shift + S) > Facets > Web
并将其再次标记为源根目录。如果您找到永久执行此操作的方法,我将不胜感激您分享您的方法。
更多信息
编辑:如果您在 Intellij IDEA 中使用 Jartka EE 插件,这应该可以工作。
我有同样的问题,但我这样做了:
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
import java.io.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class ${NAME} extends HttpServlet {
private String message;
public void init() {
message = "Hello World!";
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
// Hello
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>" + message + "</h1>");
out.println("</body></html>");
}
public void destroy() {
}
}