今天(2021.9.24)开始学习一些有难度的知识了,如题
先安装和配置好Tomcat,具体下载和idea的配置可以参考
目录
开发步骤
Tomcat根据Servlet规范调用Servlet接口实现类规则
1.Tomacat有权创建Servlet接口实现类实例对象
2.Tomcat根据实例对象调用service
开发步骤:
1、创建一个java类继承与HttpServlet父类,使之成为一个Servlet接口实现类
2、重写HttpServlet父类的两个方法,doGet或doPost
3、将Servlet接口实现类信息【注册】到Tomcat服务器
网站——web——web-inf——web.xml
<?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接口实现类类路径地址交给Tomat-->
<servlet>
<servlet-name>oneServlet</servlet-name>
<servlet-class>com.bjpowernode.controller.OneServlet</servlet-class>
</servlet>
<!--为servlet接口实现类提供一个简短的别名-->
<servlet-mapping>
<servlet-name>oneServlet</servlet-name>
<url-pattern>/one</url-pattern>
</servlet-mapping>
</web-app>
在这个web.xml写
结果:
Servlet对象生命周期
1、网站中所有的Servlet接口实现类的实例对象,只能由Http服务器负责创建,开发人员不能手动创建Servlet接口实现类的实例对象
2、在默认情况,http服务器接收到对于当前Servlet接口实现类第一次请求时自动创建这个Servlet接口实现类的实例对象
在手动配置情况下,要求HTTP服务器启动时找到那个创建某个Servlet接口实现类
<load-on-startup>30</load-on-startup><!--填写一个大于0的整数即可-->
3、在Http服务器运行期间,一个Servlet接口实现类只能被创建一个实例对象
4、销毁时间:http服务器关闭,将网站中所有的Servlet对象进行销毁
创建一个Servlet:
package com.bjpowernode.controller;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class OneServlet extends HttpServlet {
public OneServlet(){
System.out.println("oneServlet被创建实例对象");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("OneServlet doGet is run..");
}
}
同理,创建一个TwoServlet实例对象
看xml文件
<?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>OneServlet</servlet-name>
<servlet-class>com.bjpowernode.controller.OneServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>TwoServlet</servlet-name>
<servlet-class>com.bjpowernode.controller.TwoServlet</servlet-class>
<!--通知Tomcat在启动时负责TwoServlet实例对象-->
<load-on-startup>9</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>OneServlet</servlet-name>
<url-pattern>/one</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TwoServlet</servlet-name>
<url-pattern>/two</url-pattern>
</servlet-mapping>
</web-app>
结果:
当在网页访问:
出现:
httpServletResponse接口
此接口来自于Servlet规范中,在Tomcat中存在setvlet-api.jar;
此接口实现类由Http服务器负责;
负责将doGet、doPost方法结果写入到响应体交给浏览器;
开发人员将此接口修饰的对象称为相应对象;
主要功能:
将执行结果以二进制写入到响应体中;
设置响应头中contant-type属性,从而控制浏览器使用,对应编译器将响应体二进制竖直编译为文字、图片、视频、命令;
设置响应头中location属性,将一个请求地址赋值给location,从而控制浏览器向指定服务器发送请求;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int i = 50;
PrintWriter out = response.getWriter();
out.write(i);//ascii码,返回2
out.print(i);//50
// String result = "java<br/>Mysql<br/>Html<br/>";
// out.println(result);
}
结果如注释
带有html标签的:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html"