×

JavaWeb开发 - 使用IDEA创建Servlet程序

96
画星星高手
2018.01.13 09:54* 字数 1368

前言

最近做项目需要,从之前熟悉的PHP和Python转到了JavaWeb,所以就有了这个笔记。资源图片都是来自网上的资源,根据自己的实际操作应用,做了总结归纳。

所需工具

  • JDK
  • Tomcat
  • IDEA

创建工程

image.png

设置工程名字:


image.png

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


image.png

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

image.png

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

image.png

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

image.png

Web工程设置

创建classeslib目录

在WEB-INF 目录下点击右键,New --> Directory,创建 classes 和 lib 两个目录

image.png

classes目录用于存放编译后的class文件,lib用于存放依赖的jar包

classes目录配置

File --> Project Structure...,进入 Project Structure窗口,点击 Modules --> 选中项目“JavaWeb” --> 切换到 Paths 选项卡 --> 勾选 “Use module compile output path”,将 “Output path” 和 “Test output path” 都改为之前创建的classes目录

image.png

即将后面编译的class文件默认生成到classes目录下

lib目录配置

还是在这个Project Structure这个窗口。点击 Modules --> 选中项目“JavaWeb” --> 切换到 Dependencies 选项卡 --> 点击右边的“+”,选择 “JARs or directories...”,选择创建的lib目录。

image.png

选择Jar Directory

image.png

image.png

配置打包方式Artifacts

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


image.png

Tomcat配置

创建Tomcat容器

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


image.png

配置服务器名称路径

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


image.png

运行配置

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


image.png

JavaWeb测试

运行配置

Run -> Edit Configurations,进入“Run Configurations”窗口,选择之前配置好的Tomcat,点击“Deployment”选项卡,点击“+” -> “Artifact”-> 选择创建的web项目的Artifact...
修改“Application context”-> Apply -> OK

image.png

说明:此处的Application context是指定本工程的根目录。就是你访问服务器的路径,比如这里设置了JavaWeb,那么访问服务器的地址就是http://localhost:8080/JavaWeb

编辑Jsp文件

在index.jsp文件中的body之间添加要显示的内容,然后点击“运行”的绿色三角


image.png

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


image.png

至此,intellij idea创建并设置javaweb工程全部完成,下面是在其中编写并运行Servlet。

Servlet实现

接下来记录一下怎么编写一个Servlet程序,到Servlet程序运行起来的全过程。

引入Servlet相关包

我感觉IDEA还是有点不太智能,明明配置了Tomcat了,都不给我自动引入Servlet包,导致在IDEA中建立Servlet使用javax.servlet.http.HttpServlet等类时,出现了如下错误:

image.png

原因:IntelliJ IDEA 没有导入 servlet-api.jar 这个.jar包,需要手动导入。

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

image.png

编写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文件

image.png

部署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

点击运行按钮


image.png

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

image.png

后记

作为一个写习惯了PHPPython的人来说,刚刚转到Java还是有各种不适应的,还好Java和我最喜欢写的C#语法很相近,所以上手也不是很难,就是各种环境配置好麻烦= =...

About

了解更多有趣的操作请关注我的微信公众号:DealiAxy
每一篇文章都在我的博客有收录:blog.deali.cn

Java
Web note ad 1