两种简单的servlet实现反向代理

本文详细介绍了在Java项目中如何使用smiley-http-proxy-servlet进行反向代理的两种方法:一是通过web.xml配置,适用于Tomcat环境;二是通过Spring Boot项目注册bean的方式,灵活代理多个URL。文章提供了具体配置示例,包括依赖jar包引入及参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下两种方法都需要引入jar包:

 <dependency>
    <groupId>org.mitre.dsmiley.httpproxy</groupId>
    <artifactId>smiley-http-proxy-servlet</artifactId>
    <version>1.6</version>
 </dependency>
一、web.xml实现(tomcat,默认端口)(Spring项目可以,简单地web项目可能会有问题,正在探索中)
<!-- 反向代理 begin -->
<servlet>
    <servlet-name>poxyHttpRequest</servlet-name>
    <servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class>
    <init-param>
        <param-name>targetUri</param-name>
        <param-value>https://www.baidu.com/s</param-value>
    </init-param>
    <init-param>
        <param-name>log</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>poxyHttpRequest</servlet-name>
    <url-pattern>/s/*</url-pattern>
</servlet-mapping>
<!-- 反向代理 end -->

访问localhost:8080/s即展示百度的页面
servlet.png

二、通过代码注册bean(基于Spring boot)

可以通过setName来设置多个bean,从而代理多个url

package *.*.*;

import org.mitre.dsmiley.httpproxy.ProxyServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Created by czz on 2018/11/13.
 */
@Configuration
public class SolrProxyServletConfiguration {
    @Bean
    public ServletRegistrationBean servletRegistrationBaiduBean(){
        ServletRegistrationBean baidu= new ServletRegistrationBean(new ProxyServlet(), "/s/*");
        baidu.setName("baidu");
        baidu.addInitParameter("targetUri", "http://www.baidu.com/s");
        baidu.addInitParameter(ProxyServlet.P_LOG, "false");
        return baidu;
    }

    @Bean
    public ServletRegistrationBean servletRegistrationRunoobBean(){
        ServletRegistrationBean runoob= new ServletRegistrationBean(new ProxyServlet(), "/bootstrap/*");
        runoob.setName("runoob");
        runoob.addInitParameter("targetUri", "http://www.runoob.com/bootstrap");
        runoob.addInitParameter(ProxyServlet.P_LOG, "false");
        return runoob;
    }
}

转载于:https://www.cnblogs.com/czz-hl/p/10027226.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值