J2ee
文章平均质量分 73
shan9liang
悟空
展开
-
程序员踩坑步步高(十)
陆续整理中……原创 2019-09-16 20:32:16 · 555 阅读 · 1 评论 -
浅析SSH核心原理(二)
Hibernate是一个开放源代码的ORM(对象-关系映射)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久原创 2013-07-18 14:49:18 · 5648 阅读 · 30 评论 -
剖析SSH核心原理(一)
在我前面的文章中,也试图总结过SSH,见http://blog.csdn.net/shan9liang/article/details/8803989,随着知识的积累,总感觉以前说得比较笼统,思路不够清晰,所以打算写几篇文章再稍微深入地剖析一下SSH,只能说是稍微,因为这三个框架的架构设计和基本原理,并不是通过几篇文字,就能说出所以然的,时间和精力有限,只是希望能通过这几篇简练的文字使大家对ssh的认识再上一个台阶。原创 2013-07-13 10:36:16 · 14185 阅读 · 30 评论 -
SpringMVC+Spring3+Hibernate4开发环境搭建
早期的项目比较简单,多是用JSP 、Servlet + JDBC 直接搞定,后来使用 Struts1(Struts2)+Spring+Hibernate, 严格按照分层概念驱动项目开发,这次又使用 Spring MVC取代Struts来进行开发。MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下SpringMVC+Spring3+Hibernate4的开发环境搭建先大致看一下项目原创 2013-06-24 08:01:32 · 72825 阅读 · 23 评论 -
Linux平台下java程序员的基本功(六)
一、Linux下Apache安装和配置(包含GCC的安装)由于有了前面几节的安装经验,这里的安装步骤的具体说明,我就从简了。1、下载apache何为apache?Apache HTTP Server(简称Apache)是一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并原创 2013-06-18 08:17:02 · 1954 阅读 · 4 评论 -
Linux平台下java程序员的基本功(五)
一、Linux下tomcat安装和配置1、从www.apache.org网站中下载tomcat的Linux版本 tar.gz (pgp, md5)2、将该文件通过ftp上传到Linux中如果不会上传,请参考第二节对于tomcat而言,文件很有可能是apachxxx.tar.gz的文件,对于该文件而言需要进行两次解压,首先通过gzip解压,使用gzip –d ap原创 2013-06-18 08:16:10 · 2416 阅读 · 4 评论 -
Linux平台下java程序员的基本功(四)
一、Linux下jdk安装和配置对于Linux安装JDK,需要进行以下几个步骤: 1、从sun公司网站下载JDK的Linux安装版本 本文采用jdk-7u21-linux-i586.rpm 2、通过ftp将该文件上传到Linux 如果ftp不能上传,请参考上一节,我是采用的LeapFTP上传工具。 3、修改该文件的运行原创 2013-06-18 08:15:14 · 4229 阅读 · 3 评论 -
Linux平台下java程序员的基本功(七)
一、Jkconnector安装和配置,并整合tomcat集群1、下载我选择的是jakarta-tomcat-connectors-1.2.15-src.tar.gz何为Jkconnector?Tomcat提供了专门的JK插件来负责Tomcat和HTTP服务器的通信。把JK插件安置在对方的HTTP服务器上。当HTTP服务器接收到客 户请求时,它会通过JK插件来过滤UR原创 2013-06-18 08:19:01 · 2310 阅读 · 4 评论 -
Linux平台下java程序员的基本功(三)
一、安装vsftpd和LeapFTP,并做相关配置1、先扫盲(1)何为vsftpd?如果你想在你的Linux/Unix服务器上搭建一个安全、高性能、稳定性好的FTP服务器,那么vsftpd可能是你的首选应用。vsftpd意思为“very secure FTP daemon(非常安全的FTP进程)”,是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守原创 2013-06-17 11:04:20 · 3174 阅读 · 3 评论 -
Linux平台下java程序员的基本功(二)
一、安装linux和putty1、安装比较简单,不再重复贴图,具体参考以下文档http://www.docin.com/p-30647520.html如果是在一台全新的机器上安装,文档中虚拟机安装部分忽略即可。也可以参考http://wenku.baidu.com/view/1bfeb7651ed9ad51f01df2c9.html2、安装putty原创 2013-06-17 11:02:29 · 2865 阅读 · 4 评论 -
Struts2+Spring3+Mybatis3开发环境搭建
本文主要介绍Struts2+Spring3+Mybatis3开发环境搭建Struts和Spring不过多介绍。MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old J原创 2013-06-12 16:38:24 · 20926 阅读 · 18 评论 -
JPA基本API描述
JPA(Java Persistence API,Java持久化API),定义了对象-关系映射(ORM)以及实体对象持久化的标准接口。JPA是JSR-220(EJB3.0)规范的一部分,在JSR-220中规定实体对象(EntityBean)由JPA进行支持。所以JPA不局限于EJB3.0,而是作为POJO持久化的标准规范,可以脱离容器独立运行,开发和测试更加方便。 下面通过一张图来原创 2013-05-30 08:39:47 · 5228 阅读 · 7 评论 -
ANT速写
一、为什么使用ANT当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来原创 2013-05-20 09:11:21 · 3722 阅读 · 3 评论 -
关于AOP的几个问题
什么是AOP? AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。 为什么使用AOP? 将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要原创 2013-04-18 21:04:53 · 3507 阅读 · 9 评论 -
java complier compliance level问题引发的思考
问题起源:今天再在ESB调用WebService测试,需要在jboss上部署一个ejb项目(ejb发布的webservice),过去部署好好的代码,这次再部署上去竟然报错了,log记录的错误如下:[org.jboss.detailed.classloader.ClassLoaderManager] (HDScanner) Unexpected error during lo原创 2013-12-11 17:28:08 · 31606 阅读 · 30 评论 -
EJB+Annotation实现AOP
之所以介绍Jboss AOP,是因为我们的项目要用,项目采用的是ejb,需要使用AOP插入一层,来记录系统日志,后期可能还要插入一层缓存,和安全控制方面的东西。项目驱动学习嘛,因为我们的应用服务器选择的是jboss,自然要使用jboss自己比较成熟的框架,JBoss AOPJboss AOP是一个以Aspected为核心的框架,可用在任何编程环境或与我们的应原创 2014-03-27 16:11:57 · 3454 阅读 · 30 评论 -
一文读懂Redisson
一文读懂Redisson,敬请期待原创 2019-09-16 20:30:24 · 877 阅读 · 1 评论 -
Tomcat Session共享
有多种实现方案,在这里介绍2种。方案1:使用 web容器本身功能,Tomcat组播优点:配置简点,不依赖第三方存储。缺点:广播延迟,需要Tomcat7及以上版本,需要广播端口方案2:使用缓存实现,Redis或memcached 优点:实时性高,常用方式 缺点:需要维护第三方服务,必须保证高可用。其他方案: 可以设置nginx或haproxy等负载方式为ip绑定,假装实现Tomcat之间的Sessi...原创 2015-06-30 23:15:08 · 1283 阅读 · 1 评论 -
高性能分布式架构实践(一)
先把普通企业级基本性能优化的小方法复习下JVM 参数调优1. 使用64位JDK 1.6+ & Tomcat 6+。2. jvm内存优化编辑tomcat/bin/目录下catalina.bat(linux为catalina.sh,配置类似,请自行百度),在文件开头加上以下代码(注意先搜索一下,不要重复设置)3. set JAVA_OPTS=-Xms512m -Xmx4...原创 2018-03-26 19:42:38 · 1019 阅读 · 1 评论 -
小丫头来了,伺候着
先欠着……原创 2017-06-19 20:42:18 · 1537 阅读 · 2 评论 -
httpclient连接池的使用
httpclient是java开发中非常常见的一种访问网络资源的方式了,本位主要说明多线程环境下HttpClient连接池的使用。虽说http协议时无连接的,但毕竟是基于tcp的,底层还是需要和服务器建立连接的。对于需要从同一个站点抓取大量网页的程序,应该使用连接池,否则每次抓取都和Web站点建立连接、发送请求、获得响应、释放连接,一方面效率不高,另一方面稍不小心就会疏忽了某些资源的释放、导致原创 2015-05-31 22:07:46 · 2215 阅读 · 2 评论 -
Mybatis动态构建Sql(无实体类)
先简单说下Mybatis的动态sql,这不是今天的重点。MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑。例如,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息MyBatis中用于实现动态SQ原创 2014-10-26 17:29:36 · 9299 阅读 · 76 评论 -
聊聊单元测试(三)——Spring Test+JUnit完美组合
这两天做Web开发,发现通过Spring进行对象管理之后,做测试变得复杂了。因为所有的Bean都需要在applicationContext.xml中加载好,之后再通过@Resource去取得。如果每次都要整个业务流做的差不多了再去测试,这样效率很低,也很麻烦。如果单独去写一个测试用类,这样太繁琐了。于是想起Spring有一个测试框架,能够整合JUnit进行测试,于是便拿出来试试~原创 2014-10-26 17:35:15 · 106232 阅读 · 45 评论 -
基于Velocity开发自己的模板引擎
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码原创 2014-10-25 09:48:39 · 3754 阅读 · 74 评论 -
自己动手开发IOC容器
我们广大程序员总是谈论IoC,可是少有人将注意力放在IoC如何实现上,在本文中,我将用简要的语言,配合一些图例,从需求,设计,代码三方面来描述如何实现一个简单的IoC容器。代码也已公布,见我的CSDN CODE,地址:https://code.csdn.net/shan9liang/ioccontainer原创 2014-07-09 15:13:11 · 8396 阅读 · 25 评论 -
JAVA注解引发的思考
自从JDK1.5引入@override,@Deprecated,@SuppressWarnings这三个注解和自定义注解后,注解开始如火如荼地发展起来,现在很多框架都支持注解,注解可以使我们的代码看起来更简洁,而且在一定程度上解除了类原有特性和扩展特性之间的耦合。 为什么加上@Override,当前的方法就定义将覆盖超类中的方法,如果不覆盖就编译报错? 为什么使用加上@Depr原创 2014-06-09 21:32:36 · 2881 阅读 · 18 评论 -
Win7(64)+eclipse(64)+tomcat7(64)+jdk7(64)开发环境配置
Win7(64) + eclipse(64)+ tomcat7(64)+ jdk7(64)开发环境配置 一直开发都是用myeclipse,这次尝试了一下eclipse,并且开发工具全部采用最新版本,配置的时候出现了各种各样的问题,总算总结出一个标准步骤,和大家分享一下。 一、到官网下载文件,全部选择for window 64位最新版本 二、安装配置1、解压apache-原创 2013-04-25 09:41:16 · 51762 阅读 · 24 评论 -
使用Maven构建和部署J2EE应用程序的EAR文件
这篇文章,主要是技术上的整理,用来mark一下,用的时候参考。一、新建项目新建一个空的Maven Project项目二、放入依赖注:ear部署时如果里面有entity,会发生错误,所以不要把entity放到依赖项中,部署的时候先部实体,然后再部ear。将需要打入EAR中的jar、war以dependencies-d原创 2014-05-20 20:49:26 · 9962 阅读 · 19 评论 -
HIbernate Lazy 常用配置
Lazy:延迟加载,在真正使用某个对象的时候才正真的去创建,即hibernate才会正真的发出sql语句去加载该对象Lazy的有效期:只有在session打开的时候才有效;session关闭后lazy就没效了。 lazy策略可以用在: 1、 标签上:可以取值true/false * 标签上,可以取值true/false,这个特性需要类增强(不常用)* 设置标签中的l原创 2013-04-15 14:10:22 · 2429 阅读 · 6 评论 -
测试dom4j创建、修改、遍历XML
java项目概览: XmlManage.javapackage com.jialin;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.HashMap;import java.util.Iterator;import java原创 2013-04-22 08:24:36 · 7121 阅读 · 6 评论 -
Hibernate性能优化
性能优化是一个很大的话题,大到程序架构优化,数据库设计等,小到一个特定算法,甚至js优化等等。这里我们只简单谈一下hibernate的性能优化。在使用Hibernate的时候,通过正确的方法和策略,可以提高执行效率。 (一)抓取策略抓取策略(fetching strategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候, Hibernate如何原创 2013-04-13 20:15:49 · 3718 阅读 · 6 评论 -
一口一口吃掉Struts(十)——异常自动处理机制
在通常的情况下,我们得到异常以后,需要将页面导航到一个错误提示的页面,提示错误信息。利用Stuts我们可以采用两种方式处理异常 一、编程式异常处理 *即我们在Action中调用业务逻辑层对象的方法时,用try{ }catch的方式来截获异常之后,手工对异常进行处理 *我们以前的开发过程中,都是使用编程式的异常处理 *在编程式异常处理的时候,我们可以使用strut原创 2013-04-02 14:14:30 · 3066 阅读 · 4 评论 -
一口一口吃掉Struts(二)——STRUTS基本工作流程
上篇中,用jsp+servlet演示了一下Struts的基本原理,这一篇我们介绍一下Struts执行的基本流程。 假设现在有以下情景:用户正在浏览一个用STRUTS的技术构建的网站主页,主页上有个登陆表单,用户填好登陆名和密码,单击“登陆”按钮,就激活了以下一系列过程:(1)用户的请求以HTTP方式传输到服务器上,接受请求的是ActionServlet.(2)ActionSe原创 2013-03-19 15:21:32 · 24383 阅读 · 20 评论 -
一口一口吃掉Struts(一)——用JSP+Servlet演示Struts的基本原理
struts是开源项目。它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web应用的MVC的应用框架。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。 MVC即Model-View-Controller的缩写,是一种常用的设计模式(具体自己百度吧) 我们用JSP+Servlet实现“一个应用的增改信息”,先来看一下,如果原创 2013-03-18 11:23:14 · 11477 阅读 · 15 评论 -
一口一口吃掉Struts(九)——国际化问题(2)
Strust如何支持国际化? (一)页面(jsp)静态信息的国际化 我们以登录这个例子来说明。 通过点击中文或英文,实现登录界面语言信息的改变 主要步骤: 1、创建国际化资源文件 *与上一篇中提到的创建方式一致属性文件内容MessagesBoundle_zn_CN.properties login.form.field.usern原创 2013-04-01 09:57:00 · 3655 阅读 · 6 评论 -
jsp内建对象
pageContext属性默认在当前页面是共享的。session中的属性在当前session中是共享的ServletContext对象中的属性对所有页面都是共享的。原创 2013-03-11 14:37:33 · 1293 阅读 · 4 评论 -
一口一口吃掉Struts(九)——国际化问题(1)
Web应用实现国际化(i18n),主要包括两个方面 一、页面(jsp)静态信息的国际化二、动态消息的国际化 在开始Struts国际化之前,我们先来看一下java如何实现国际化 主要步骤: 1、创建属性文件(国际化资源文件) *国际化资源文件是有baseName+Locale构成,如MessagesBundle_en_US.properties *缺省原创 2013-03-28 22:35:55 · 3252 阅读 · 4 评论 -
测试JSTL表达式
JSTL一般要配合EL表达式一起使用,通过提供大多数 Web 应用程序常用功能的标准实现,JSTL 有助于加速开发周期。一、JSTL和El表达式的关系EL与四个 JSTL 定制标记库提供的操作结合起来允许页面作者不使用脚本元素即可实现表示层逻辑(不需要对表示层程序编写java代码),这极大地简化了 JSP 应用程序的维护。 二、使用方法:1、如果只是使用EL表达式不需要引入任何原创 2013-03-13 07:56:37 · 2587 阅读 · 5 评论 -
Web应用过滤器Fileter
在Web应用开发中,我们经常使用过滤器截取从客户端发来的请求,做出相应的处理。过滤器可以说是外部进入网站的第一道关卡。我们可以利用这道关卡做很多事,例如:对数据进行编码;判断用户是否来自可信任的网络;过滤垃圾数据;记录日志;判断客户端浏览器版本;验证用户是否合法等等…… 下图用UML时序图简单画了一下filter的基本原理 一、定义过滤器类,必须实现 java.ser原创 2013-03-10 20:04:15 · 3873 阅读 · 4 评论 -
测试Jsp 静态包含和动态包含
静态包含是在请求包含页面时去编译包含页面,编译时遇到静态页面包含伪码将被包含页面的内容复制到被包含页面中进行编译。动态包含是指在请求包含页面的时候遇到动态包含指令将请求转到被包含页面,这时去编译被包含页面。 测试项目 静态包含Header.jspInsert title here I'm HeaderContent.jspHe原创 2013-03-10 20:05:19 · 2873 阅读 · 5 评论