`

两种方式显示J2EE容器以外的图片

    博客分类:
  • J2ee
阅读更多

方法1:写一个SERVLET

 

public class ShowPictureServlet extends HttpMsgConnector {

    private static final long serialVersionUID = 1L;

    private final static Logger logger = Logger.getLogger(ShowPictureServlet.class.getSimpleName());

    @Override
    public void execute(HttpServletRequest req, HttpServletResponse res) throws Exception {
        String imagePath = req.getParameter(FSConstant.PARAM_PATH);
        String module = req.getParameter(FSConstant.PARAM_MODULE);
        logger.debug("----------Getting image path--->" + imagePath);
        logger.debug("----------Getting module name--->" + module);

        OutputStream os = res.getOutputStream();
        if(StringUtils.isNotEmpty(imagePath) && StringUtils.isNotEmpty(module)) {
            imagePath = getPrePath(Modules.valueOf(module)) + imagePath;
            imagePath = imagePath.replace("/", File.separator).replace("\\", File.separator);
            logger.debug("----------Image real path is--->" + imagePath);
            InputStream imageIn = new FileInputStream(new File(imagePath));
            
            if(imagePath.toLowerCase().endsWith(".png")) {
                res.setContentType("image/png;charset=utf-8");
            } else if(imagePath.toLowerCase().endsWith(".jpg")){
                res.setContentType("image/jpeg;charset=utf-8");
            } else {
                res.setContentType("image/gif;charset=utf-8");
            }
            BufferedInputStream bis = new BufferedInputStream(imageIn);
            BufferedOutputStream bos = new BufferedOutputStream(os);
            byte data[] = new byte[4096];
            int size = 0;
            size = bis.read(data);
            while(size != -1) {
                bos.write(data, 0, size);
                size = bis.read(data);
            }
            bis.close();
            bos.flush();
            bos.close();
        } else {
            logger.warn("----------No parameter of image path or module name received from mobile client--->");
        }
        os.flush();
        os.close();
    }

    private String getPrePath(Modules moduleType) {
        switch (moduleType) {
        case SERVICE:
            return FSConstant.SERVICE_PATH;
        case REWARDS:
            return FSConstant.REWARDS_PATH;
        case PROMOTION:
            return FSConstant.PROMOTION_PATH;
        case RESTAURANT:
            return FSConstant.RESTAURANT_IMAGE_PATH;
        case COMMENTARY:
            return FSConstant.RESTAURANT_COMMENTARY_PATH;
        default:
            logger.error("----------Error module name--->" + moduleType.name());
            return null;
        }
    }

}

 简单解释一下,参数imagePath是存放在数据库中的图片相对路径,module是模块名,根据这两个参数可以获取当前图片的真实路径。

 

下面是在web.xml里的配置:

 

       <servlet>
	    <servlet-name>ShowImageServlet</servlet-name>
    	<servlet-class>com.molisc.mobileserver.core.connection.ShowPictureServlet</servlet-class>
  	</servlet>
        <servlet-mapping>
		<servlet-name>ShowImageServlet</servlet-name>
		<url-pattern>/ShowImage.action</url-pattern>
	</servlet-mapping>

 

使用方法参考如下:

 

http://localhost:8080/testapp/ShowImage.action?model=SERVICE&path=/20110403/a.png
 

 

方法二:在TOMCAT/JBOSS中添加一个Context

 

<Context path="/picContext" docBase="/home/leozhou/apps/test"/>

 其中/home/leozhou/apps/test是我的图片存放路径。

 

使用方法参考如下:

 

http://localhost:8080/picContext/20110403/a.png
 

 

 

分享到:
评论

相关推荐

    J2EE企业级项目开发-3期(KC007) 2.5 J2EE容器文档.doc

    J2EE容器是一种特殊的软件环境,它能够管理和控制J2EE应用程序中的组件,确保它们的正确运行和生命周期管理。容器提供了标准接口,让开发者无需关心底层的实现细节,可以专注于业务逻辑的编写。 J2EE容器主要有以下...

    j2ee j2ee j2ee j2ee j2ee j2ee

    j2ee j2ee j2ee j2ee j2ee j2ee j2ee j2ee j2ee

    J2EE 指南 J2EE中文教材

    - **J2EE容器**:详细介绍了J2EE平台提供的不同类型的容器及其作用。 - **打包J2EE组件**:讲解了如何将Java组件打包成可部署的单元。 - **开发者角色**:定义了在J2EE项目中不同开发者的职责范围。 - **本书...

    软件07级J2EE复习题

    数据源配置可以通过两种方式实现:配置公共数据源或在服务器上配置特定的数据源。数据源是连接数据库的桥梁,简化了数据库连接的管理。 【ODBC架构】 ODBC(Open Database Connectivity)架构包括应用程序、驱动...

    J2EE 登陆时的图片验证码 源码

    自己做的J2EE小程序,登陆界面上的图片验证代码。

    J2EE J2EE J2EE J2EE

    J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE

    FusionCharts结合J2EE服务端生成图片demo

    J2EE结合FusionChart服务端生成统计图的demo,将资源下载下来,导入到MyEclipse中即可运行,所有依赖的东西,都已经打到包中了。例子中包括客户端右键统计图下载,服务器端将图片保存到硬盘上的web自定义目录下等...

    j2ee实例 j2ee实例j2ee实例

    EJB是J2EE的高级组件,提供了一种标准的方式来实现分布式计算,尤其适合处理复杂的业务逻辑和数据管理。 在J2EE实例中,你会接触到诸如Web层、业务逻辑层(Service层)和数据访问层(DAO层)的分层架构设计。Web层...

    J2EE指南(J2EE中文教材)

    它包括了组成J2EE平台的技术以及描述如何开发J2EE组件并部署在J2EE软件开发包上。 这篇指南不是为J2EE服务器及工具供应商准备的,它没有解释如何实现J2EE结构,也没有解释J2EE软件包。J2EE规范描述了J2EE结构并可以...

    jaas资料 基于JAAS和J2EE Web容器的验证与授权

    ### 基于JAAS和J2EE Web容器的验证与授权 #### 一、JAAS概述 Java Authentication and Authorization Service (JAAS) 是 Java 平台提供的一个强大的验证和授权框架,它允许开发者实现安全策略,从而确保应用程序...

    Java理论与实践:让J2EE脱离容器

    Java理论与实践:让J2EE脱离容器,探讨的是如何在非J2EE容器环境中使用J2EE的一些关键服务,从而让J2EE应用程序能在更轻量级的J2SE环境中运行。通常,J2EE应用程序依赖于完整的J2EE容器来提供服务,如EJB、JTA、JNDI...

    如何让J2EE程序脱离容器

    消息队列提供了一种结构化的松耦合方式,促进了组件化设计,减少了组件间的直接依赖,同时也简化了分布式、可伸缩和容错的设计,因为消息生产者和消费者不必运行在同一JVM中。 JNDI也是另一个可以在J2SE环境中使用...

    j2ee.jar架包

    j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar...

    J2EE Tutorial中文版

    主要有两种容器: 1. **Web容器**:处理Web组件(Servlets、JSP),提供HTTP服务。 2. **EJB容器**:管理EJB组件,处理事务、安全性、生命周期管理。 **五、J2EE发展与更新** J2EE后来演变为Java EE(Java Platform...

    j2ee13种核心技术

    ### j2ee13种核心技术解析 #### 一、引言 J2EE,即Java 2 Platform, Enterprise Edition,是Sun Microsystems推出的一套企业级Java应用开发平台标准。它集合了众多关键技术,旨在简化复杂的企业级应用开发,提供...

    J2EE完全参考手册-J2EE概述-pdf

    2. **容器和服务**:J2EE 容器为应用组件提供运行环境,如 Web 容器(Servlet 和 JSP)、EJB 容器(Enterprise JavaBeans)以及应用程序服务器(Application Server)。这些容器提供了诸如安全性、事务管理、资源...

    J2ee试题汇总J2ee试题J2ee考试题

    7. **JPA(Java Persistence API)**:提供了一种规范来处理Java对象和数据库之间的持久化,取代了传统的EJB CMP(容器管理持久化)。 8. **JSF(JavaServer Faces)**:是一个MVC(Model-View-Controller)框架,...

    J2EE指南(J2EE tutorial )

    6. **部署J2EE应用程序**:将构建好的J2EE应用程序部署到J2EE容器中,如Tomcat或JBoss。 7. **运行客户端**:启动客户端程序,测试与服务器端的交互是否正常。 8. **调试与优化**:根据运行过程中发现的问题,不断...

Global site tag (gtag.js) - Google Analytics