应用背景:
随着客户应用环境的复杂度得提高和系统的扩展,不同应用之间的访问成为一个必然,原理上我们只需要在一个应用中调用另一个应用的链接即可,本篇文章是把调用的过程封装成了一个servlet,具有隐蔽性以及简化灵活性。
实现过程:
假设有A,B两个应用,要实现从A应用访问B应用,从A应用里通过一个servlet访问B应用里的某一个页面,该页面所展现的报表通过传参实现。
1:编写servlet,代码如下
package com.runqian;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletRedirect extends HttpServlet {
public ServletRedirect() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String raq=request.getParameter("raq");//获取参数
response.sendRedirect("http://localhost:6001/demo/reportJsp/showReport.jsp?raq="+raq);//转跳
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void init() throws ServletException {
}
}
说明,代码简单,接受raq报表名称,当然访问B应用的url我们也可以通过参数传递,或者读取配置文件中的参数,例子中我们写死了B应用的rul。
2:将编译好的类文件放在A应用/web-inf/classes/test目录下。
3:在A应用/web-inf/下的web.xml里配置该servlet
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>com.runqian. ServletRedirect </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/ServletTest</url-pattern>
</servlet-mapping>
4:将test.raq放在B应用的reportFiles文件夹下
5:启动A,B两个应用
6:比如A应用的地址为http://localhost:8080/report,B应用的地址为http://localhost:6001/demo
那么可以可以通过以下的方式从A应用访问B应用的showReport.jsp,并在该页面展现test.raq
http://localhost:8080/report/ServletTest?raq=test.raq
效果展示:
总结:
通过servlet的封装,可以给终端用户一个良好的体验,并且可以通过配置文件或者参数的设置,动态传递url以及报表模板,使得我们的配置更加灵活