发布静态资源
介绍
需求:
在浏览器中输入地址,访问静态HTML页面。
细节说明:
把HTML和CSS页面加入到JavaWeb工程中,在Tomcat中部署工程,然后启动Tomcat服务器,并使用浏览器访问。
实现步骤
第一步:创建工程并选择使用的Tomcat版本
第二步:拷贝资源到工程的web目录中
将我们写好的网页资源,html、css、图片等粘贴到web目录下
第三步:在web.xml中配置默认主页
我们刚开始的默认主页是index.jsp,但是我们不用这个
这就需要我们自己配置,在web的目录下,有个web.xml文件,我们打开它来配置。
这个里面需要添加标签,在标签中添加主页的路径,比如这里想要设news.html为主页,这样修改默认主页就完成了。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!-- 修改默认主页-->
<welcome-file-list>
<welcome-file>/new/news.html</welcome-file>
</welcome-file-list>
</web-app>
第四步:部署工程到Tomcat服务器
确认一下项目有没有发布,点击Run,edit configurations
先到deployment这里,找到application context,确认一下这个路径,一般不用改,我这里有多个模块,所以我这里指定了具体的模块,如果是单个项目或者只有一个module,那么他一般只有一个**“/”**,不用去动。
然后到server,这里可以改一下你想使用的浏览器;要注意的是,url这一栏里后面的路径一定跟你上面application context是一致的;我这里的端口80对应下面的HTTP port,可以自己任意修改,80的话地址栏不显示;接着update resource选择可以自动更新资源,建议选这个。点击ok。
第五步:测试浏览器访问
上面配置完,接着就可以启动服务,找到对应的tomcat,点击运行。
最后这里容易出现404的情况,它找不到资源的位置,说明你的路径可能写错了,检查一下修正即可。
发布动态资源
Servlet介绍
在学习发布动态资源之前,需要先了解一下Servlet。
Servlet翻译成中文是服务端脚本,它是SUN公司推出的一套规范,称为Servlet规范。Servlet规范是JavaEE规范中的一部分。我们可以通过查阅JavaEE规范的API来了解Servlet的基本概念。通过点击JavaEE8官方文档,就可以看到关于Servlet的内容介绍。
Java EE API本地chm文件
Servlet是运行在Java服务器端的程序,用于接收和响应来自客户端基于HTTP协议的请求。
如果想实现Servlet的功能,可以通过实现javax.servlet.Servlet接口或者继承它的实现类。
核心方法:service(),任何客户端请求都会经过该方法。
案例介绍
需求:
把项目涉及的HTML和样式以及图片文件拷贝到JavaWeb工程中,在Tomcat中部署工程,然后启动Tomcat服务器,并使用浏览器访问。
实现步骤
第一步:创建工程
第二步:拷贝资源
第三步:配置默认主页
第四步:部署项目
这里资源访问路径多加一个自己的项目路径。
步骤基本跟上面静态资源的做法一致,这里不再重复。
创建案例中的动态资源-Servlet
按步骤编写Servlet:
第一步:编写一个普通类实现Servlet接口或者继承GenericServlet类或者继承HttpServlet
首先在src目录下创建一个包,然后创建一个MyServlet的一个类,这个类实现Servlet接口,并且实现它的所有方法。
第二步:重写service方法,输出一句话
package com.symc.servlet;
import javax.servlet.*;
import java.io.IOException;
/**
* @Author: 凤文 沈阳医学院2019级医学信息工程 0213
* @CreateTime: 2021/10/06 15:05
* @Description: 这是一个Servlet入门的程序
*/
public class MyServlet implements Servlet{
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* 所有的客户端请求都会通过service方法
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("我被访问了");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
第三步:在web.xml配置Servlet
需要找到在web,WEB-INF目录下的web.xml文件;
这里需要配置Servlet声明,我这里随意起个名字myServlet,类的位置就是完整的包名;
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.symc.servlet.MyServlet</servlet-class>
</servlet>
还需要配置Servlet映射,依旧是将声明里的名字放入这里的名字,下面url加上/myServlet,这样它先找到映射里的名字,然后根据这个名字找到声明里的名字对应的位置就是上面的包名。
<!-- Servlet映射-->
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myServlet</url-pattern>
</servlet-mapping>
</web-app>
第四步:启动tomcat服务器测试
打开服务器,到浏览器地址栏添加名称,
浏览器页面空白,也没有什么变化,但是回到控制台会发现被访问的痕迹,并且浏览器每刷新一次,控制台都会有记录。
这就说明,只要有客户端访问服务器,一定会执行service方法。
执行流程
首先我们地址栏访问的/myServlet先去找到映射配置中url-pattern这个标签中的内容,然后根据这个内容找到name标签中的名字,再通过这个名字找到再声明配置中的name标签中的名字,然后再通过这个名字找到声明配置中的实现类,最后找到这个类之后它会自动执行service方法。