前言:
链接:Tomcat学习笔记--简单了解和Web应用的目录结构以及常见的Web应用时出现404错误
有问题:什么是动态资源?
静态资源:当用户多次访问这个资源,资源的源代码永远不会改变的资源
动态资源:当用户多次访问这个资源,资源的源代码可能会发生改变。
Servlet : 用java语言来编写动态资源的开发技术。
Servlet特点:
1)普通的java类,继承HttpServlet类,覆盖doGet方法
2)Servlet类只能交给tomcat服务器运行(开发者自己不能运行)
所以要配置web.xml具体下面会讲
静态访问URL举例:http://localhost:8080/xx/zz.html
动态访问URL举例:http://localhost:8080/xx/One
区别看到没 动态结尾没有后缀名,这个下面会解释的。
进入正题:
第一步:创建一个servlet
为了 了解Tomcat部署的流程,我是照着例子手动敲了一个servlet例子。
编写一个servlet程序,继承HttpServlet
但是继承HttpServlet需要一个jar包:servlet-api.jar
具体可以在 apache-tomcat-9.0.8lib中找到 添加到项目中然后build path即可
package first.one;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class first extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().write("codingCoge 的第一个动态页面,纯手写,没有用工具哈 时间是"+new Date());
}
}
第二步:创建Web应用的目录结构在Tomcat中:
apache-tomcat-9.0.8webapps中创建项目,名字自拟定。我这里是xx
项目下创建 WEB-INF文件夹 是用来存放servlet之类的数据,是不可以被外人看到的。
你也可以在xx下面添加静态的资源如开头提到的:zz.html
静态访问URL举例:http://localhost:8080/xx/zz.html
不过这里要构造的是动态的。
具体的不多说了,看这个好了
链接:创建Web应用的目录结构在Tomcat中
第三步:部署servlet到Tomcat环境中:
把servlet文件存放到Web应用的目录结构中的classes文件中。
记住 :要把包也导进来 ,我这里是这样的:
apache-tomcat-9.0.8webappsxxWEB-INFclassesfirstone.first.class
one.first
就是包名
第四步:配置web.xml文件:
是schema约束的xml文件 具体的可以去
W3school了解下
<?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">
<servlet>
<servlet-name>first</servlet-name>
<servlet-class>first.one.first</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/One</url-pattern>
</servlet-mapping>
</web-app>
注意:
1. One前面要+'/' 不然404错误
<url-pattern>/One</url-pattern>
2. 写类名而不是 .class结尾
<servlet-class>first.one.first</servlet-class>
重点:
<servlet-name>first</servlet-name> 是内部名称,可以自定义
但是一般都是servlet类名,不要太随便起的
<url-pattern>/One</url-pattern>是url地址
顺序:重中重:
http://localhost:8080/xx/One
先访问 <servlet-mapping>
<url-pattern>/One</url-pattern>
</servlet-mapping>
导航到:
<servlet-mapping>
<servlet-name>first</servlet-name> //内部地址
</servlet-mapping>
再根据同名导航到:
<servlet>
<servlet-name>first</servlet-name> //同名导航到这
<servlet-class>first.one.first</servlet-class> //再到这
</servlet>
最后:
http://localhost:8080/xx/One
显示的是:servlet所在地址