JavaWeb开发---使用IDEA创建Servlet程序
前言 最近做项目需要,从之前熟悉的PHP和Python转到了JavaWeb,所以就有了这个笔记。资源图片都是来自网上的资源,根据自己的实际操作应用,做了总结归纳。 所需工具 JDK Tomcat IDEA 创建工程 设置工程名字: 创建完成后工程结构如下: 上面的图片是在网络上复制的,好像我用的IDEA 2017.3.2没有这个Create web.xml的选项,我也不知道为啥,难道是IDEA越更
目录25 个章节
前言
最近做项目需要,从之前熟悉的PHP和Python转到了JavaWeb,所以就有了这个笔记。资源图片都是来自网上的资源,根据自己的实际操作应用,做了总结归纳。
所需工具
- JDK
- Tomcat
- IDEA
创建工程

设置工程名字:

创建完成后工程结构如下:

上面的图片是在网络上复制的,好像我用的IDEA 2017.3.2没有这个Create web.xml的选项,我也不知道为啥,难道是IDEA越更新功能越退步了?
如下图:

所以这里就要自己配置IDEA添加web.xml。
步骤:打开Project Structure,在facets中选中次级的web或者在Modules中选中web,在deployment Descriptors面板里,点击 +号选择web.xml以及版本号。然后在弹出的对话框中修改xml默认的目录,加上web就可以了。

然后确定,就有web.xml文件了。
如图:

Web工程设置
创建classes、lib目录
在WEB-INF 目录下点击右键,New --> Directory,创建 classes 和 lib 两个目录

classes目录用于存放编译后的class文件,lib用于存放依赖的jar包
classes目录配置
File --> Project Structure...,进入 Project Structure窗口,点击 Modules --> 选中项目“JavaWeb” --> 切换到 Paths 选项卡 --> 勾选 “Use module compile output path”,将 “Output path” 和 “Test output path” 都改为之前创建的classes目录

即将后面编译的class文件默认生成到classes目录下
lib目录配置
还是在这个Project Structure这个窗口。点击 Modules --> 选中项目“JavaWeb” --> 切换到 Dependencies 选项卡 --> 点击右边的“+”,选择 “JARs or directories...”,选择创建的lib目录。


选择Jar Directory


配置打包方式Artifacts
点击 Artifacts选项卡,IDEA会为该项目自动创建一个名为“JavaWeb:war exploded”的打包方式,表示 打包成war包,并且是文件展开性的,输出路径为当前项目下的 out 文件夹,保持默认即可。另外勾选下“Build on make”,表示编译的时候就打包部署,勾选“Show content of elements”,表示显示详细的内容列表。

Tomcat配置
创建Tomcat容器
Run -> Edit Configurations,进入“Run Configurations”窗口,点击"+"-> Tomcat Server -> Local,创建一个新的Tomcat容器。

配置服务器名称路径
在"Name"处输入新的服务名,点击“Application server”后面的“Configure...”,弹出Tomcat Server窗口,选择本地安装的Tomcat目录 -> OK

运行配置
在“Run Configurations”窗口的“Server”选项板中,去掉勾选“After launch”,设置“HTTP port”和“JMX port”,点击 Apply -> OK,至此Tomcat配置完成。

JavaWeb测试
运行配置
Run -> Edit Configurations,进入“Run Configurations”窗口,选择之前配置好的Tomcat,点击“Deployment”选项卡,点击“+” -> “Artifact”-> 选择创建的web项目的Artifact...
修改“Application context”-> Apply -> OK
说明:此处的Application context是指定本工程的根目录。就是你访问服务器的路径,比如这里设置了JavaWeb,那么访问服务器的地址就是http://localhost:8080/JavaWeb。
编辑Jsp文件
在index.jsp文件中的body之间添加要显示的内容,然后点击“运行”的绿色三角

打开浏览器,输入:localhost:8080/JavaWeb

至此,intellij idea创建并设置javaweb工程全部完成,下面是在其中编写并运行Servlet。
Servlet实现
接下来记录一下怎么编写一个Servlet程序,到Servlet程序运行起来的全过程。
引入Servlet相关包
我感觉IDEA还是有点不太智能,明明配置了Tomcat了,都不给我自动引入Servlet包,导致在IDEA中建立Servlet使用javax.servlet.http.HttpServlet等类时,出现了如下错误:

原因:IntelliJ IDEA 没有导入 servlet-api.jar 这个.jar包,需要手动导入。
导入步骤如下:选中项目,右击选择“Open Modules Settings”,选择“Libraries”,点击“+”,选“Java”;在弹出的窗口中选择tomcat所在的目录,在lib目录下找到servlet-api.jar这个jar包导入完成即可。

编写Servlet源文件
在src目录下新建HelloWorld.java,并编写一下代码并进行编译: 代码如下:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloWorld extends HttpServlet {
private String message;
@Override
public void init() throws ServletException {
message = "Hello world, this message is from servlet!";
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应内容类型
resp.setContentType("text/html");
//设置逻辑实现
PrintWriter out = resp.getWriter();
out.println("<h1>" + message + "</h1>");
}
@Override
public void destroy() {
super.destroy();
}
}
编译后会发现在classes目录下生成了HelloWorld.class文件

部署servlet
方法1
在WEB-INF目录下web.xml文件的<web-app>标签中添加如下内容:
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
方法2
(反正我自己测试是没有成功的) 在HelloWorld文件的类前面加上:@WebServlet("/HelloWorld")
运行Servlet
点击运行按钮

控制台出现successfully则tomcat服务启动成功!打开浏览器输入:localhost:8080/JavaWeb/HelloWorld即可查看servlet运行状态了.

后记
作为一个写习惯了PHP和Python的人来说,刚刚转到Java还是有各种不适应的,还好Java和我最喜欢写的C#语法很相近,所以上手也不是很难,就是各种环境配置好麻烦= =...
About
了解更多有趣的操作请关注我的微信公众号:DealiAxy 每一篇文章都在我的博客有收录:blog.deali.cn
_EOF_
JavaWeb开发---使用IDEA创建Servlet程序
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
Apache-Commons-IO-最佳实践
本文列举了Java输入输出部分(IO area)的大量“最佳实践”(best practices)。 java.io.File 通常你需要去处理文件或文件名时,有许多会出错的情况: 一个类可在Unix运行但不能在Windows运行,反之亦然。 由于双路径分隔符(path separator)或缺失路径分隔符(path separator)导致文件名无效。 (在Windows上的)符合通用命名标准(
2022-05-27 · Java · 约 1 分钟
JavaWeb开发---Servlet的生命周期实验
前言 Servlet是运行在服务器端的程序,它的运行状态由Servlet容器(简称容器)来维护。 通常,在容器收到客户对Servlet的请求时,容器会判断这个Servlet是否为第一次被访问,如果是第一次被访问,则会创建一个Servlet实例同时调用该实例的init()方法,进行初始化。 每个Servlet只会被创建一个实例,同时也只会被初始化一次。然后将这个实例一直保存在内存中,对所有的请求进行
2022-05-27 · Java · 约 1 分钟
在Linux-Ubuntu上配置开发JavaFx程序-(更新)
前言 不清楚什么原因,网络上关于JavaFx的中文资料很少,并且都很老,所以建议大家有兴趣学习JavaFx还是看官方文档比较好,而且貌似部分人不看好JavaFx。 关于Swing的资料倒是要多很多。我觉得挺奇怪的,从设计上来将,还是JavaFx高明一些嘛。 PS:经过近一周的折腾和探索,发现OpenJDK使用JavaFX真的好多坑~ OpenJDK 和 Oracle JDK的配置是有差别的,这里推
2022-05-27 · Java · 约 1 分钟
深入Jar包:Gradle构建可执行jar包与访问jar包中文件夹与文件
前言 Java的跨平台功能听起来很诱人可口,号称“Write Once,Run Everywhere”,实际上是“Run Once,Debug Everywhere”... 在实际开发过程中还是会遇到各种各样的坑的,刚刚解决了一系列问题,特地写个文章总结一下。 使用Gradle构建Jar包 感谢万能的Gradle,极大提高了Java开发的生产力~ 在Gradle中生成jar包可以使用官方的插件:a
2022-05-27 · Java · 约 1 分钟
讨论
共 0 条加载评论中…
