这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战
介绍了简单的Java Web应用的结构以及搭建过程。
此前我们简单的学习了Tomcat:Tomcat服务器的入门以及目录结构,Tomcat的server.xml配置文件详解,tomcat的知识是学习Java Web的基础,大家一定要大概了解一下! 现在我们来正式学习Java Web应用,本次我们将学习如何创建简单的Web应用。
1 静态Web应用
单纯的静态Web应用的结构很简单,就是把各种静态资源方法Web应用目录下面即可访问。我们来尝试创建一个静态Web应用:
- 在webapps下创建一个hello目录,这表示我们的Web应用目录就是hello,同时虚拟访问路径path也是hello。
- 在hello目录下创建index.html;
index.html的内容如下:
<html>
<head>
<title>hello</title>
</head>
<body>
<h1> Hello ,This is a static web application!</h1>
</body>
</html>
- 在hello目录下创建一个a目录;
- 在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应用:
- 在webapps下创建hello1工程目录;
- 在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>
- 在webapps\hello1\下创建WEB-INF目录;
- 在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学习博客!