实现使用struts2框架访问jar包中的jsp方案

     因公司使用的eadp底层jar包拓展需求,欲将success,error等公共jsp页面封装到底层jar包, 这样公用jsp就不会被变更.

     第一种方案:使用struts2提供的struts2-embeddedjsp-plugin-2.3.3.jar 通过引入该jar包 配置struts.xm已达到l直接访问jsp

                    参考网址: https://cwiki.apache.org/confluence/display/WW/Embedded+JSP+Plugin  该网址有简单的配置说明,但使用该方法会出现几点问题,第一个是直接输出中文乱码, 第二个是如何引入jar包中相关的js、css、图片等信息  

                    第一个问题直接输出中文乱码的问题,由几个方面决定,文件编码的格式 及tomcat中的server.xml默认的编码以及jsp中的<@page   > jsp本身就是一个servlet输出.一般jsp都是访问时tomcat通过pageEncoding="UTF-8"进行编译  浏览器是由contentType="text/html; charset=UTF-8" 编码格式解析中文.但通过配置以上几个参数统一为gbk及utf-8, 均不能使输出中文恢复正常,该jar包在编译jar包中jsp时都是使用utf-8来进行编码,使用gbk来进行解码,所以导致乱码,最后通过<%String str1=new String("测试弹出".getBytes("utf-8"),"utf-8");%>  <h3><%=new String(str.getBytes("gbk"),"utf-8") %></h3> 直接对该中文进行输出,则乱码问题解决. 后折磨了三天,想通过比较简单的配置达到这个目的,通过插入jsp表达式<%response.setHeader("content-type","text/html;charset=UTF-8");response.setContentType("text/html;charset=UTF-8");response.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8"); out.print("登录信息7");%> 以及在web.xml调用相关的encodingFilter等方法. 都没有任何起色, 只能使用直接输出new String(str.getBytes("gbk"),"utf-8") 解码这种方法来实现,但该方法不适合在底层通用的jar包中使用, 故暂时放弃该方案.  

                    第二个问题引入jar包中相关的js和css 直接引入相关的js和css无论绝对路径和相对路径都会失败,只能通过调用servlet来拿到相关的文件.在web.xml中配置相关的servlet

<servlet> 
        <servlet-name> javascriptservlet </servlet-name> 
        <servlet-class> example.JavaScriptServlet </servlet-class> 
    </servlet> 
    <servlet-mapping> 
        <servlet-name> javascriptservlet </servlet-name> 
        <url-pattern> *.js </url-pattern> 
    </servlet-mapping> 

public void doGet(HttpServletRequest request,HttpServletResponse response)throws
                     ServletException,IOException { 
            String fileUri = request.getRequestURI(); 
            String contextPath = request.getContextPath(); 
            if(!contextPath.endsWith( "/ ")){ 
                  contextPath = contextPath + "/ "; 
            } 
            fileUri = fileUri.substring(contextPath.length()-1,fileUri.length());


            //注意:此处未考虑并发访问异常 
            BufferedReader in = new BufferedReader(new InputStreamReader(getClass().
                             getClassLoader().getResourceAsStream(fileUri))); 
            
            PrintWriter out = response.getWriter(); 


            response.setContentType("text/javascript;charset=UTF-8"); 
            String line = null; 
            while((line = in.readLine()) != null){ 
                 out.println(line); 
            } 


            in.close(); 
            out.close(); 
    } 

 在jsp页面中配置引入 <script src="script/jquery.js"></script> 

css及图片也是如此实现,但会影响性能


第二种方案 是想通过tomcat启动时候直接将jsp解压到相关的目录下, 该方案一共有两个难点,第一个是怎么拿到要解压的jar包 第二个是怎么只解压出jsp. 

                 配置web.xml

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
antlr-2.7.2.jar, aopalliance-1.0.jar, asm-3.3.jar, asm-commons-3.3.jar, asm-tree-3.3.jar, builder-0.6.2.jar, classworlds-1.1.jar, commons-beanutils-1.8.0.jar, commons-chain-1.2.jar, commons-collections-3.2.2.jar, commons-digester-2.0.jar, commons-fileupload-1.3.2.jar, commons-io-2.2.jar, commons-lang-2.4.jar, commons-lang3-3.2.jar, commons-logging-1.1.3.jar, commons-validator-1.3.1.jar, core-0.6.2.jar, dwr-1.1.1.jar, ezmorph-1.0.6.jar, freemarker-2.3.22.jar, google-collections-1.0.jar, google-gxp-0.2.4-beta.jar, guava-r09.jar, jackson-core-asl-1.9.2.jar, jackson-mapper-asl-1.9.2.jar, javassist-3.11.0.GA.jar, jcl-over-slf4j-1.5.8.jar, json-lib-2.3-jdk15.jar, juli-6.0.18.jar, mvel2-2.0.11.jar, ognl-3.0.19.jar, org.apache.felix.framework-4.0.3.jar, org.apache.felix.main-4.0.3.jar, org.apache.felix.shell-1.4.3.jar, org.apache.felix.shell.tui-1.4.1.jar, org.osgi.compendium-4.0.0.jar, org.osgi.core-4.1.0.jar, oro-2.0.8.jar, oval-1.31.jar, plexus-container-default-1.0-alpha-10.jar, plexus-utils-1.2.jar, sitemesh-2.4.2.jar, slf4j-api-1.7.12.jar, spring-aop-3.0.5.RELEASE.jar, spring-asm-3.0.5.RELEASE.jar, spring-beans-3.0.5.RELEASE.jar, spring-context-3.0.5.RELEASE.jar, spring-core-3.0.5.RELEASE.jar, spring-expression-3.0.5.RELEASE.jar, spring-test-3.0.5.RELEASE.jar, spring-web-3.0.5.RELEASE.jar, struts-core-1.3.10.jar, struts2-cdi-plugin-2.3.30.jar, struts2-codebehind-plugin-2.3.30.jar, struts2-config-browser-plugin-2.3.30.jar, struts2-convention-plugin-2.3.30.jar, struts2-core-2.3.30.jar, struts2-dojo-plugin-2.3.30.jar, struts2-dwr-plugin-2.3.30.jar, struts2-embeddedjsp-plugin-2.3.30.jar, struts2-gxp-plugin-2.3.30.jar, struts2-jasperreports-plugin-2.3.30.jar, struts2-javatemplates-plugin-2.3.30.jar, struts2-jfreechart-plugin-2.3.30.jar, struts2-jsf-plugin-2.3.30.jar, struts2-json-plugin-2.3.30.jar, struts2-junit-plugin-2.3.30.jar, struts2-osgi-admin-bundle-2.3.30.jar, struts2-osgi-demo-bundle-2.3.30.jar, struts2-osgi-plugin-2.3.30.jar, struts2-oval-plugin-2.3.30.jar, strut

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值