WEB服务器软件都有哪些呢?(这些软件都是提前开发好的。)
应用服务器和WEB服务器的关系?
Tomcat下载
Tomcat服务器要想运行,需要先有jre,所以要先安装JDK,配置java运行环境。
Tomcat服务器的安装:
关于Tomcat服务器的目录
配置Tomcat服务器需要哪些环境变量?
启动Tomcat: startup
关闭Tomcat:stop (shutdown.bat文件重命名为stop.bat,为什么?原因是shutdown命令和windows中的关机命令冲突。所以修改一下。)
怎么测试Tomcat服务器有没有启动成功呢?
第一步:找到CATALINA_HOME\webapps目录
第二步:在CATALINA_HOME\webapps目录下新建一个子目录,起名:oa
第三步:在oa目录下新建资源文件,例如:index.html
第四步:启动Tomcat服务器
第五步:打开浏览器,在浏览器地址栏上输入这样的URL:
http://127.0.0.1:8080/oa/index.html
思考一个问题:
我们在浏览器上直接输入一个URL,然后回车。这个动作和超链接一样吗?既然是一样的,我们完全可以使用超链接。
<a href="/oa01/login.html">user login2a>
<a href="/oa01/test/debug/d.html">d pagea>
http://127.0.0.1:8080/oa/userList.html

有哪些角色(在整个BS结构的系统当中,有哪些人参与进去了)
角色和角色之间需要遵守哪些规范,哪些协议
Servlet规范是一个什么规范?
开发步骤是怎样的?
第一步:在webapps目录下新建一个目录,起名crm(这个crm就是webapp的名字)。当然,也可以是其它项目,比如银行项目,可以创建一个目录bank,办公系统可以创建一个oa。
第二步:在webapp的根下新建一个目录:WEB-INF
第三步:在WEB-INF目录下新建一个目录:classes
第四步:在WEB-INF目录下新建一个目录:lib
第五步:在WEB-INF目录下新建一个文件:web.xml
注意:这个文件是必须的,这个文件名必须叫做web.xml。这个文件必须放在这里。一个合法的webapp,web.xml文件是必须的,这个web.xml文件就是一个配置文件,在这个配置文件中描述了请求路径和Servlet类之间的对照关系。
这个文件最好从其他的webapp中拷贝,最好别手写。没必要。复制粘贴
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0"
metadata-complete="true">
web-app>
第六步:编写一个Java程序,这个小Java程序也不能随意开发,这个小java程序必须实现Servlet接口。
第七步:编译我们编写的HelloServlet
重点:你怎么能让你的HelloServlet编译通过呢?配置环境变量CLASSPATH
CLASSPATH=.;C:\dev\apache-tomcat-10.0.12\lib\servlet-api.jar
思考问题:以上配置的CLASSPATH和Tomcat服务器运行有没有关系?
第八步:将以上编译之后的HelloServlet.class文件拷贝到WEB-INF\classes目录下。
第九步:在web.xml文件中编写配置信息,让“请求路径”和“Servlet类名”关联在一起。
这一步用专业术语描述:在web.xml文件中注册Servlet类。
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0"
metadata-complete="true">
<servlet>
<servlet-name>fdsafdsagfdsafdsaservlet-name>
<servlet-class>com.bjpowernode.servlet.HelloServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>fdsafdsagfdsafdsaservlet-name>
<url-pattern>/fdsa/fd/saf/d/sa/fd/sa/fdurl-pattern>
servlet-mapping>
web-app>
第十步:启动Tomcat服务器
第十一步:打开浏览器,在浏览器地址栏上输入一个url,这个URL必须是:
浏览器上编写的路径太复杂,可以使用超链接。(非常重要:html页面只能放到WEB-INF目录外面。)
以后不需要我们编写main方法了。tomcat服务器负责调用main方法,Tomcat服务器启动的时候执行的就是main方法。我们javaweb程序员只需要编写Servlet接口的实现类,然后将其注册到web.xml文件中,即可。
总结一下:一个合法的webapp目录结构应该是怎样的?
webapproot
|------WEB-INF
|------classes(存放字节码)
|------lib(第三方jar包)
|------web.xml(注册Servlet)
|------html
|------css
|------javascript
|------image
....
浏览器发送请求,到最终服务器调用Servlet中的方法,是怎样的一个过程?(以下这个过程描述的很粗糙。其中还有很多步骤我省略了。)
将CATALINA_HOME/conf/logging.properties文件中的内容修改如下:
java.util.logging.ConsoleHandler.encoding = GBK
public void service(ServletRequest request, ServletResponse response){
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("hello servlet!
");
}
集成开发工具很多,其中目前使用比较多的是:
使用IDEA集成开发工具开发Servlet
<?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_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>studentServlet</servlet-name>
<servlet-class>com.bjpowernode.javaweb.servlet.StudentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>studentServlet</servlet-name>
<url-pattern>/servlet/student</url-pattern>
</servlet-mapping>
</web-app>
第九步:给一个html页面,在HTML页面中编写一个超链接,用户点击这个超链接,发送请求,Tomcat执行后台的StudentServlet。
student.html
这个文件不能放到WEB-INF目录里面,只能放到WEB-INF目录外面。
student.html文件的内容
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>student pagetitle>
head>
<body>
<a href="/xmm/servlet/student">student lista>
body>
html>
第十步:让IDEA工具去关联Tomcat服务器。关联的过程当中将webapp部署到Tomcat服务器当中。
第十一步:启动Tomcat服务器
第十二步:打开浏览器,在浏览器地址栏上输入:http://localhost:8080/xmm/student.html
什么是Servlet对象生命周期?
Servlet对象是由谁来维护的?
思考:我们自己new的Servlet对象受WEB容器的管理吗?

研究:服务器在启动的Servlet对象有没有被创建出来(默认情况下)?
怎么让服务器启动的时候创建Servlet对象呢?
在servlet标签中添加子标签,在该子标签中填写整数,越小的整数优先级越高。
<servlet>
<servlet-name>aservletservlet-name>
<servlet-class>com.bjpowernode.javaweb.servlet.AServletservlet-class>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>aservletservlet-name>
<url-pattern>/aurl-pattern>
servlet-mapping>
Servlet对象生命周期
默认情况下服务器启动的时候AServlet对象并没有被实例化
用户发送第一次请求的时候,控制台输出了以下内容:
AServlet无参数构造方法执行了
AServlet's init method execute!
AServlet's service method execute!
根据以上输出内容得出结论:
用户继续发送第二次请求,控制台输出了以下内容:
AServlet's service method execute!
根据以上输出结果得知,用户在发送第二次,或者第三次,或者第四次请求的时候,Servlet对象并没有新建,还是使用之前创建好的Servlet对象,直接调用该Servlet对象的service方法,这说明:
关闭服务器的时候,控制台输出了以下内容:
AServlet's destroy method execute!
通过以上输出内容,可以得出以下结论:
请问:destroy方法调用的时候,对象销毁了还是没有销毁呢?
Servlet对象更像一个人的一生:
关于Servlet类中方法的调用次数?
当我们Servlet类中编写一个有参数的构造方法,如果没有手动编写无参数构造方法会出现什么问题?