Java搭建一个简单的Web应用

2,140 阅读7分钟

这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战

介绍了简单的Java Web应用的结构以及搭建过程。

此前我们简单的学习了Tomcat:Tomcat服务器的入门以及目录结构Tomcat的server.xml配置文件详解tomcat的知识是学习Java Web的基础,大家一定要大概了解一下! 现在我们来正式学习Java Web应用,本次我们将学习如何创建简单的Web应用。

1 静态Web应用

单纯的静态Web应用的结构很简单,就是把各种静态资源方法Web应用目录下面即可访问。我们来尝试创建一个静态Web应用:

  1. 在webapps下创建一个hello目录,这表示我们的Web应用目录就是hello,同时虚拟访问路径path也是hello。
  2. 在hello目录下创建index.html;

index.html的内容如下:

<html>
  <head>
    <title>hello</title>
  </head>
  <body>
    <h1> Hello ,This is a static web application!</h1>
  </body>
</html>
  1. 在hello目录下创建一个a目录;
  2. 在hello\a目录下创建一个a.html;

a.html的内容如下:

<html>
  <head>
    <title>hello</title>
  </head>
  <body>
    <h1><font color=red>a.html</font></h1>
  </body>
</html>

启动tomcat,此时可以访问创建静态Web应用下的静态资源。

打开浏览器访问连接http://localhost:8080/hello/index.html,即可访问到index.html资源。

在这里插入图片描述

访问http://localhost:8080/hello/a/a.html,即可访问到a.html资源。 在这里插入图片描述

可以看到,我们只需要找到静态资源在Web应用中的路径,即可访问对应的资源。另外,如果直接访问某个目录,那么将会默认访问该目录下面的名为“index”的资源,因此直接访问http://localhost:8080/hello,也可访问到index.html资源。如果a目录下也有index.html资源,那么直接访问http://localhost:8080/hello/a也行。

2 动态Web应用

现在的Web应用都是动态Web应用,它一般由多个静态web资源(如html、css、js文件),和多个动态web资源(如Jsp文件、Servlet)组成。

动态Web应用很重要的特点是一般来说在Web应用目录下多了一个WEB-INF目录(实际上静态Web应用也可以配置)。该目录下面会有一个web.xml文件,这个文件是Web应用的部署描述符文件,用于配置该Web应用的各种属性,如欢迎页、servlet、filter、listener等,当然如果项目很简单就可以不用配置。另外,该目录下一般还有classes目录,用于存放src下的文件(java文件已被编译为class文件),还有lib目录,用于存放工程运行时候的依赖的jar包。

Java Web应用目录结构一般为:

webapps

  |- hello1(项目名)

    |-index.html

    |-WEB-INF 该目录下的资源安全,对外不能直接访问。可以通过跳转访问

      |-web.xml 当前工程的主配置文件

      |-classes 存放src下的文件,java源文件已被编译为class文件

      |-lib 存放工程运行时候的jar文件

当然为了区分各种文件,还可以建立专门的目录。另外,这里的目录仅仅是一个最基本最原始的动态web应用目录,当我们学习maven或者spring boot之后,应用目录将会有很大改变!

下面创建一个简单的动态Web应用:

  1. 在webapps下创建hello1工程目录;
  2. 在webapps\hello1\下创建hello.jsp动态资源文件,能够动态展示客户端浏览器的信息;
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
    <head>
        <title>hello1.html</title>
    </head>
    <body>
        <h1>hello1</h1>
        <!-- 动态展示客户端浏览器的信息-->
        <h3>${header['User-Agent']}</h3>
    </body>
</html>
  1. 在webapps\hello1\下创建WEB-INF目录;
  2. 在webapps\hello1\WEB-INF\下创建web.xml,配置默认欢迎页为hello.jsp
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<!-- 欢迎页 -->
	 <welcome-file-list>
    	<welcome-file>hello.jsp</welcome-file>
  	</welcome-file-list>
</web-app>

启动tomcat,打开浏览器访问http://localhost:8080/hello1,此时就会根据配置的默认欢迎页路径访问到我们配置的hello.jsp页面,如果我们使用不同的浏览器访问,我们会发现页面上将展示不同的信息,这就是动态Web资源。

我们进入tomcat目录下的\work\Catalina\localhost\hello1目录中,就能找到JSP文件被转换后的Java源文件以及class文件:

在这里插入图片描述

打开Java源文件,我们会发现浏览器展示的HTML文本是在Java源文件中动态拼接输出的:

在这里插入图片描述

3 配置Host(虚拟主机)

此前学习tomcat的server.xml文件的时候的时候我们就说过,Host可以让一个tomcat支持通过不同的域名1.1. (虚拟主机)去访问不同的Web应用,下面我们简单测试一下。

我们在其他目录下(我这里是G:\work\host)新建一个myhost项目目录,在项目中添加一个index.html文件:

<html>
  <head>
    <title>myhost</title>
  </head>
  <body>
    <h1> Hello ,My Host is myhost.com!</h1>
  </body>
</html>

然后配置server.xml,在Engine下添加一个Host标签:

<!--  Host名为myhost.com  -->
<Host name="myhost.com" appBase="G:\work\host"
     unpackWARS="true" autoDeploy="true">
</Host>

注意此时我们需要为新Host配置域名映射,我们在C:\Windows\System32\drivers\etc下面的hosts文件中,添加域名映射:

#临时域名映射
127.0.0.1	myhost.com

启动tomcat,访问虚拟主机下面的Web应用myhost.com:8080/myhost/

在这里插入图片描述

4 Idea创建Web应用

我们这里采用Idea + jar包来创建一个最基本的Java Web应用,Idea是目前最流行的企业级项目开发工具。实际上jar包也不需要,直接使用maven管理,这里为了照顾初学者,使用最原始的方式,在企业中手动引入jar包的方式基本上是不存在的。在Idea2020的最新的版本中,java Enterprise下面的Web Application + jar包创建Web项目的方式已被移除,只能使用maven。对此,我们只有从普通的Java项目开始改造了,这种创建方式对于所有的版本基本上都适用。

选择file - new - project新建项目,左侧选择java,点击next:

在这里插入图片描述

点击next:

在这里插入图片描述

配置项目名和项目地址,点击finish:

在这里插入图片描述

现在我们已经创建了一个普通Java项目:

在这里插入图片描述

开始改造,点击file - Project Structure

在这里插入图片描述

选择Modules,点击上面的 +,选择Web:

在这里插入图片描述

点击Create Artifact

在这里插入图片描述

点击apply,点击 OK:

在这里插入图片描述

此时出现了Web应用熟悉的目录:

选择web,右键点击,选择new - JSP/JSPX:

在这里插入图片描述

设置name为index:

在这里插入图片描述

此时会自动创建一个JSP文件,随便写点东西:

在这里插入图片描述

点击Add Configuration,点击 + ,选择Tomcat Server

在这里插入图片描述

点击local,此时出现本地tomcat配置界面:

在这里插入图片描述

点击Configure,点击Tomcat Home右边的文件夹,选择一个本地已解压的tomcat目录,点击OK:

在这里插入图片描述

此时已经配好了本地tomcat:

在这里插入图片描述

随后配置默认浏览器:

在这里插入图片描述

在Path这里选择本地浏览器的位置,点击OK

在这里插入图片描述

点击Fix,将会直接自动选择部署的Web应用,点击Apply,点击Ok即可:

在这里插入图片描述 在这里插入图片描述

Application context作为此 Web 应用程序的虚拟上下文路径,访问该应用的资源时必须加上,可以自己修改!

也可以手动点击Deployment,点击 + ,点击Artifact手动添加:

在这里插入图片描述

到此,一个非常简单的Web应用和tomcat都配置好了,选择Web应用,右键点击,选择Run

在这里插入图片描述

此时启动tomcat,启动之后Idea将会跳转到配置的浏览器访问欢迎页面:

在这里插入图片描述

5 创建maven Web应用

接下来创建基于maven的Java Web应用。选择File - new - project,选择如下:

在这里插入图片描述

输入项目名和地址,点击next:

在这里插入图片描述

配置maven地址,点击Finish:

在这里插入图片描述

此时Idea已经帮我们创建好基本项目结构了:

在这里插入图片描述

接下来创建源码路径和资源路径:

在main目录下,右键点击,new - Directory :

在这里插入图片描述

高版本的Idea有智能提示,我们直接选择即可,无需其他操作!

在这里插入图片描述

低版本没有的话,那就自己创建java和resources这两目录:

在这里插入图片描述

选择java目录,右键点击,Make Directory as - Sources Root:

在这里插入图片描述

选择resources目录,右键点击,Make Directory as - Resources Root:

在这里插入图片描述

最终结构如下:

在这里插入图片描述

java目录作为源码目录,resources作为资源目录,随后同样配置tomcat服务器即可访问!

在这里插入图片描述

6 配置tomcat插件

实际上我们可以通过maven直接引入tomcat的插件,从而不再需要配置本地tomcat服务器。 我们在pom.xml中加入tomcat7的插件:

<build>
    <finalName>mavenWeb</finalName>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
            </plugin>
        </plugins>
    </pluginManagement>
    <plugins>
        <!-- tomcat插件控制 -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <configuration>
                <!--端口控制-->
                <port>8080</port>
                <!--项目路径控制意味着http://localhost:8080/mavenWeb-->
                <path>/mavenWeb</path>
                <!--编码-->
                <uriEncoding>UTF-8</uriEncoding>
            </configuration>
        </plugin>
        <!-- maven插件控制 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>utf-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

随后选择项目,maven - Reload project,重新加载项目

在这里插入图片描述

随后在项目右侧点击maven - Plugins - tomcat7 - 双击 tomcat7:run:

在这里插入图片描述

此时即可通过配置tomcat插件启动项目而不需要配置本地tomcat服务器!

在这里插入图片描述

访问http://localhost:8080/mavenWeb,即可看到欢迎页!在企业级开发中,我们通常也采用这样的方式启动传统Java Web项目,而不是配置本地tomcat服务器!

后面的学习我们也是通过tomcat插件的方式来学习!

如有需要交流,或者文章有误,请直接留言。另外希望点赞、收藏、关注,我将不间断更新各种Java学习博客!