仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 457|回复: 9
打印 上一主题 下一主题

[学习教程] 发布一篇J2EE经由过程Filter交换前往页面的内容

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 10:59:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
不得不提一下的是:.net是看到java红,而开发出来的工具。
一个汗青项目,客户请求改ip,因为体系较为长远,没有源代码,经由过程反编译后发明ip写逝世在类中,反编译后的代码基础没法举行修正,剖析了代码后,发明与ip相干的内容为前往到页面中的字符串,以是,想到了利用Filter,在Filter中处置这些字符串,以为可行,便查询了一些材料,实验乐成。以下这个类是从网上找到的,实验乐成后发明页面已关了,对原作者暗示抱愧的同时暗示感激。
  1. packageorg.mice.ipchange;
  2. importjava.io.ByteArrayOutputStream;
  3. importjava.io.IOException;
  4. importjava.io.OutputStreamWriter;
  5. importjava.io.PrintWriter;
  6. importjava.io.UnsupportedEncodingException;
  7. importjavax.servlet.ServletOutputStream;
  8. importjavax.servlet.http.HttpServletResponse;
  9. importjavax.servlet.http.HttpServletResponseWrapper;
  10. publicclassResponseWrapperextendsHttpServletResponseWrapper{
  11. privateByteArrayOutputStreambuffer=null;
  12. privateServletOutputStreamout=null;
  13. privatePrintWriterwriter=null;
  14. publicResponseWrapper(HttpServletResponseresp)throwsIOException{
  15. super(resp);
  16. buffer=newByteArrayOutputStream();//真正存储数据的流
  17. out=newWapperedOutputStream(buffer);
  18. writer=newPrintWriter(newOutputStreamWriter(buffer,
  19. this.getCharacterEncoding()));
  20. }
  21. //重载父类猎取outputstream的办法
  22. publicServletOutputStreamgetOutputStream()throwsIOException{
  23. returnout;
  24. }
  25. //重载父类猎取writer的办法
  26. publicPrintWritergetWriter()throwsUnsupportedEncodingException{
  27. returnwriter;
  28. }
  29. //重载父类猎取flushBuffer的办法
  30. publicvoidflushBuffer()throwsIOException{
  31. if(out!=null){
  32. out.flush();
  33. }
  34. if(writer!=null){
  35. writer.flush();
  36. }
  37. }
  38. publicvoidreset(){
  39. buffer.reset();
  40. }
  41. publicbyte[]getResponseData()throwsIOException{
  42. //将out、writer中的数据强迫输入到WapperedResponse的buffer内里,不然取不到数据
  43. flushBuffer();
  44. returnbuffer.toByteArray();
  45. }
  46. //外部类,对ServletOutputStream举行包装
  47. privateclassWapperedOutputStreamextendsServletOutputStream{
  48. privateByteArrayOutputStreambos=null;
  49. publicWapperedOutputStream(ByteArrayOutputStreamstream)throwsIOException{
  50. bos=stream;
  51. }
  52. publicvoidwrite(intb)throwsIOException{
  53. bos.write(b);
  54. }
  55. }
  56. }
复制代码
前往栏目页:http://www.bianceng.cn/Programming/Java/
编写详细的Filter,内容以下
  1. packageorg.mice.ipchange;
  2. importjava.io.IOException;
  3. importjava.io.PrintWriter;
  4. importjava.util.Enumeration;
  5. importjava.util.MissingResourceException;
  6. importjava.util.ResourceBundle;
  7. importjavax.servlet.Filter;
  8. importjavax.servlet.FilterChain;
  9. importjavax.servlet.FilterConfig;
  10. importjavax.servlet.ServletException;
  11. importjavax.servlet.ServletRequest;
  12. importjavax.servlet.ServletResponse;
  13. importjavax.servlet.http.HttpServletRequest;
  14. importjavax.servlet.http.HttpServletResponse;
  15. publicclassIPChangeFilterimplementsFilter{
  16. publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
  17. FilterChainchain)throwsIOException,ServletException{
  18. //必要设置这个,以防乱码
  19. response.setContentType("text/html;charset=GBK");
  20. HttpServletRequesthttpReq=(HttpServletRequest)request;
  21. HttpServletResponsehttpResp=(HttpServletResponse)response;
  22. ResponseWrapperrespWrapper=newResponseWrapper(httpResp);
  23. chain.doFilter(request,respWrapper);
  24. //weblogic8不撑持response.setCharacterEncoding
  25. //response.setCharacterEncoding("GBK");
  26. Stringcontent=newString(respWrapper.getResponseData());
  27. Stringresult=replaceText(content);
  28. httpResp.setContentType("text/html;charset=GBK");
  29. PrintWriterout=httpResp.getWriter();
  30. out.println(result);
  31. out.close();
  32. }
  33. /**
  34. *交换内容
  35. */
  36. privateStringreplaceText(Stringcontent){
  37. Enumerationenumes=RESOURCE_BUNDLE.getKeys();
  38. while(enumes.hasMoreElements()){
  39. Stringo=enumes.nextElement().toString();
  40. content=content.replaceAll(o,RESOURCE_BUNDLE.getString(o));
  41. }
  42. returncontent;
  43. }
  44. //交换笔墨的设置文件路径
  45. privatestaticfinalStringBUNDLE_NAME="org.mice.ipchange.ipchange";
  46. //加载设置文件
  47. privatestaticfinalResourceBundleRESOURCE_BUNDLE=ResourceBundle
  48. .getBundle(BUNDLE_NAME);
  49. //猎取交换笔墨
  50. publicstaticStringgetString(Stringkey){
  51. try{
  52. returnRESOURCE_BUNDLE.getString(key);
  53. }catch(MissingResourceExceptione){
  54. e.printStackTrace();
  55. }
  56. returnkey;
  57. }
  58. publicvoidinit(FilterConfigarg0)throwsServletException{
  59. //TODOAuto-generatedmethodstub
  60. }
  61. publicvoiddestroy(){
  62. //TODOAuto-generatedmethodstub
  63. }
  64. }
复制代码
最初,在设置文件ipchange.properties中设置好你要交换的键值对就能够了,对了,别忘了在你的web.xml中界说Filter,并利用Filter。
csdn博客yueritian

C++编译的是本地码,优点是启动快,而且可以精确控制资源因此可以开发很高效的程序.缺点是编程麻烦,而且容易留下安全隐患.跨平台靠源代码在各个平台间分别编译(一处编写到处编译)
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-20 12:30:16 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
再见西城 该用户已被删除
板凳
发表于 2015-1-28 05:49:05 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
爱飞 该用户已被删除
地板
发表于 2015-2-5 11:56:31 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
分手快乐 该用户已被删除
5#
发表于 2015-2-11 16:39:36 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
山那边是海 该用户已被删除
6#
发表于 2015-3-2 15:48:48 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
若相依 该用户已被删除
7#
发表于 2015-3-11 04:30:25 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
不帅 该用户已被删除
8#
发表于 2015-3-17 20:11:39 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
再现理想 该用户已被删除
9#
发表于 2015-3-17 20:11:48 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
admin 该用户已被删除
10#
发表于 2015-3-25 00:07:58 | 只看该作者
是一种使用者不需花费很多时间学习的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 19:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表