java | (二十五)Servlet(1)req,resp,重定向,请求转发,数据共享

今天(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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值