- 浏览: 96833 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
liukai:
要报错. axis2.xml好像缺了什么东西.Caused ...
axis2+rampart实现WS-Security (一) -
qinglong3222664:
<div class="quote_title ...
myeclipse6.0下struts2.0+spring2.0+ibatis整合示例 -
gejiushihuai:
怎么没有com.ibatis.sqlmap.client.Sq ...
myeclipse6.0下struts2.0+spring2.0+ibatis整合示例 -
SENSEN1234:
pageUtil类呢?急用!!
myeclipse6.0下struts2.0+spring2.0+ibatis整合示例 -
Lori_Liu:
很详细,收益很大...
myeclipse6.0下struts2.0+spring2.0+ibatis整合示例
参考网上的例子,自己做了个简单的struts2.0+ibatis+spring2.0登陆的例子。
链接:http://blog.csdn.net/jinlong0/archive/2008/01/11/2034732.aspx
1. 新建web工程
[img] http://shiningwu.iteye.com/upload/picture/pic/12457/86475e67-51e5-3fba-998c-4e1178dfd578.bmp [/img]
点击“finish”。
2. 加入jar包
将下面的jar包加入WEB-INF/lib下
antlr-2.7.2.jar
aopalliance.jar
cglib-2.1.3.jar
commons-collections.jar
commons-dbcp.jar
commons-logging-1.0.4.jar
commons-pool.jar
freemarker-2.3.8.jar
ibatis-2.3.1.710.jar
mysql-connector-java-5.0.4-bin.jar
ognl-2.6.11.jar
oro-2.0.8.jar
spring.jar
struts2-core-2.0.11.1.jar
struts2-spring-plugin-2.0.11.1.jar
xwork-2.0.4.jar
3. 配置web.xml文件
4. 创建类与类包
结构如下图
[img]http://shiningwu.iteye.com/upload/picture/pic/12455/3668ca76-3bd8-3253-aec6-5d69df169dc8.bmp [/img]
5. 映射数据库表Users.java
6. 映射xml(users.xml)
7. 接口及实现
接口IUserDAO.java
实现UserDAO
服务层接口IUserService.java
服务层实现UserService.java
Struts中Action实现Login.java
8. 配置文件
struts.xml
struts.properties文件
ibatis的配置文件config.xml
Spring配置文件applicationContext.xml
9. UI层
登陆页面login.jsp
添加用户页面adduser.jsp
用户列表页面list.jsp
用户更新页面update.jsp
成功页面success.jsp
失败页面error.jsp
链接:http://blog.csdn.net/jinlong0/archive/2008/01/11/2034732.aspx
1. 新建web工程
[img] http://shiningwu.iteye.com/upload/picture/pic/12457/86475e67-51e5-3fba-998c-4e1178dfd578.bmp [/img]
点击“finish”。
2. 加入jar包
将下面的jar包加入WEB-INF/lib下
antlr-2.7.2.jar
aopalliance.jar
cglib-2.1.3.jar
commons-collections.jar
commons-dbcp.jar
commons-logging-1.0.4.jar
commons-pool.jar
freemarker-2.3.8.jar
ibatis-2.3.1.710.jar
mysql-connector-java-5.0.4-bin.jar
ognl-2.6.11.jar
oro-2.0.8.jar
spring.jar
struts2-core-2.0.11.1.jar
struts2-spring-plugin-2.0.11.1.jar
xwork-2.0.4.jar
3. 配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
4. 创建类与类包
结构如下图
[img]http://shiningwu.iteye.com/upload/picture/pic/12455/3668ca76-3bd8-3253-aec6-5d69df169dc8.bmp [/img]
5. 映射数据库表Users.java
package org.login.vo; public class Users { private Integer id; private String userName; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Users() { } public Users(Integer id, String userName, String password) { super(); this.id = id; this.userName = userName; this.password = password; } }
6. 映射xml(users.xml)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <typeAlias alias="user" type="org.login.vo.Users"/> <select id="recordCount" resultClass="int"> select count(*) as count from users </select> <select id="firstPage" resultClass="user" parameterClass="user"> select top $pagesize$ * from users order by id desc </select> <!--分页排序--> <sql id="paginationStart"> <![CDATA[ select * from (select row_.*, rownum rownum_ from ( ]]> </sql> <sql id="paginationEnd"> <![CDATA[ )row_ where rownum<=#end# ) where rownum_>=#start# ]]> </sql> <select id="otherPage" resultClass="user" parameterClass="map"> <include refid="paginationStart"/> <![CDATA[ SELECT * FROM users ]]> <include refid="paginationEnd"/> </select> <select id="checkUser" parameterClass="user" resultClass="user"> <![CDATA[ SELECT id, username, password FROM users WHERE username = #userName# and password = #password# ]]> </select> <select id="getUserById" parameterClass="java.lang.Integer" resultClass="user"> <![CDATA[ SELECT id, username, password FROM users WHERE id = #id# ]]> </select> <select id="getAllUser" resultClass="user" parameterClass="map"> <![CDATA[ SELECT id, username, password FROM users limit #start# ,#end# ]]> </select> <insert id="insertUser" parameterClass="user"> <![CDATA[ INSERT INTO users (username, password) VALUES (#userName#, #password#) ]]> </insert> <update id="updateUser" parameterClass="user"> <![CDATA[ UPDATE users SET username=#userName#, password=#password# WHERE id=#id# ]]> </update> <delete id="deleteUser" parameterClass="java.lang.Integer"> <![CDATA[ DELETE FROM users WHERE id = #id# ]]> </delete> </sqlMap>
7. 接口及实现
接口IUserDAO.java
package org.login.dao; import java.util.List; import org.login.vo.Users; public interface IUserDAO { List<Users> getAllUser(); Users getUserById(Integer id); boolean isLogin(Users user); boolean insertUser(Users user); boolean updateUser(Users user); boolean deleteUser(Integer id); }
实现UserDAO
package org.login.dao.Impl; import java.sql.SQLException; import java.util.List; import org.login.dao.IUserDAO; import org.login.vo.Users; import com.ibatis.sqlmap.client.SqlMapClient; public class UserDAO implements IUserDAO { private SqlMapClient client = null; public SqlMapClient getClient() { return client; } public void setClient(SqlMapClient client) { this.client = client; } public boolean deleteUser(Integer id) { try { client.delete("deleteUser", id); return true; } catch (SQLException e) { e.printStackTrace(); } return false; } public List<Users> getAllUser() { List<Users> list = null; try { list = client.queryForList("getAllUser"); } catch (SQLException e) { e.printStackTrace(); } return list; } public boolean insertUser(Users user) { try { client.insert("insertUser", user); return true; } catch (SQLException e) { e.printStackTrace(); } return false; } public boolean updateUser(Users user) { try { client.update("updateUser", user); return true; } catch (SQLException e) { e.printStackTrace(); } return false; } public boolean isLogin(Users user) { try { Users u = (Users) client.queryForObject("checkUser", user); if (u != null) { return true; } } catch (SQLException e) { e.printStackTrace(); } return false; } public Users getUserById(Integer id) { Users u = null; try { u = (Users) client.queryForObject("getUserById", id); } catch (SQLException e) { e.printStackTrace(); } return u; } }
服务层接口IUserService.java
package org.login.service; import java.util.List; import org.login.vo.Users; public interface IUserService { List<Users> getAllUser(); Users getUserById(Integer id); boolean isLogin(Users user); boolean insertUser(Users user); boolean updateUser(Users user); boolean deleteUser(Integer id); }
服务层实现UserService.java
package org.login.service.Impl; import java.util.List; import org.login.dao.IUserDAO; import org.login.service.IUserService; import org.login.vo.Users; public class UserService implements IUserService { private IUserDAO userDAO = null; public IUserDAO getUserDAO() { return userDAO; } public void setUserDAO(IUserDAO userDAO) { this.userDAO = userDAO; } public boolean deleteUser(Integer id) { return userDAO.deleteUser(id); } public List<Users> getAllUser() { return userDAO.getAllUser(); } public boolean insertUser(Users user) { return userDAO.insertUser(user); } public boolean isLogin(Users user) { return userDAO.isLogin(user); } public boolean updateUser(Users user) { return userDAO.updateUser(user); } public Users getUserById(Integer id) { return userDAO.getUserById(id); } }
Struts中Action实现Login.java
package org.login.actions; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.xml.registry.infomodel.User; import org.login.page.PageUtil; import org.login.service.IUserService; import org.login.vo.Users; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; public class Login extends ActionSupport implements ModelDriven<Users>, Preparable { private IUserService userService ; private String id ; private int pageIndex=1 ; private String pageBar ; private List<Users> list; private Users user; public String getId() { return id; } public void setId(String id) { this.id = id; } public IUserService getUserService() { return userService; } public void setUserService(IUserService userService) { this.userService = userService; } public int getPageIndex() { return pageIndex; } public void setPageIndex(int pageIndex) { this.pageIndex = pageIndex; } public String getPageBar() { return pageBar; } public void setPageBar(String pageBar) { this.pageBar = pageBar; } public List<Users> getList() { return list; } public void setList(List<Users> list) { this.list = list; } public Users getUser() { return user; } public void setUser(Users user) { this.user = user; } public void prepare() throws Exception { if (id == null || id.length() == 0) user = new Users(); else user = getUserService().getUserById(Integer.parseInt(id)); } public String execute() throws Exception { if (getUserService().isLogin(user)) { return SUCCESS; } return INPUT; } public String save() throws Exception { if (getUserService().insertUser(user)) { return SUCCESS; } return ERROR; } public String edit() { return SUCCESS; } public String update() throws Exception { if (getUserService().updateUser(user)) { return SUCCESS; } return ERROR; } public String delete() throws Exception { if (getUserService().deleteUser(Integer.valueOf(id))) { return SUCCESS; } return ERROR; } public String findAllUsers() throws Exception { PageUtil page = new PageUtil(); int count = getUserService().getCount(); page.setCurPage(pageIndex); page.setTotalRow(count); pageBar = page.getToolsMenu(); Map<String,Integer> pageMap = new HashMap<String,Integer>(); pageMap.put("start", page.getStart()); pageMap.put("end", page.getPageSize()); list = getUserService().getAllUser(pageMap); return SUCCESS; } public Users getModel() { return user; } }
8. 配置文件
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.objectFactory.spring.autoWire" value="type" /> <constant name="struts.objectFactory" value="spring" /> <include file="struts-default.xml"/> <package name="struts2" extends="struts-default"> <default-interceptor-ref name="paramsPrepareParamsStack" /> <!-- aciton的class为applicationContext.xml中的注册名 --> <action name="login" class="LoginAction"> <result name="success">/success.jsp</result> <result name="input">/login.jsp</result> </action> <action name="save" class="LoginAction" method="save"> <result name="success" type="redirect-action">show.action</result> <result name="error">/error.jsp</result> </action> <action name="edit" class="LoginAction" method="edit"> <result name="success">update.jsp</result> </action> <action name="update" class="LoginAction" method="update"> <result name="success" type="redirect-action">show.action</result> <result name="error">/error.jsp</result> </action> <action name="delete" class="LoginAction" method="delete"> <result name="success" type="redirect-action">show.action</result> <result name="error">/error.jsp</result> </action> <action name="show" class="LoginAction" method="findAllUsers"> <result name="success">/list.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
struts.properties文件
struts.locale=zh_CN struts.i18n.encoding=UTF-8 struts.objectFactory=spring
ibatis的配置文件config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <sqlMap resource="org/login/vo/users.xml"/> </sqlMapConfig>
Spring配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans default-autowire="byType" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://192.168.151.238:3306/chgl" /> <property name="username" value="vcom" /> <property name="password" value="vcom_8968888" /> </bean> <bean id="client" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="dataSource"> <ref local="dataSource"/> </property> <property name="configLocation"> <value>classpath:config.xml</value> </property> </bean> <!-- bean中的class为实现接口的类;property的name为类中引用的属性名称;ref为spring注册的名称,如上面的client--> <bean id="userDao" class="org.login.dao.Impl.UserDAO"> <property name="client" ref="client" /> </bean> <bean id="userService" class="org.login.service.Impl.UserService"> <property name="userDAO" ref="userDao"></property> </bean> <bean id="LoginAction" class="org.login.actions.Login"> <property name="userService" ref="userService"></property> </bean> </beans>
9. UI层
登陆页面login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>login.jsp</title> </head> <body> <s:form action="login" method="post"> <s:textfield name="userName" label="User Name" /> <s:password name="password" label="Password" /> <s:submit value="Submit" /> </s:form> </body> </html>
添加用户页面adduser.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>addUser.jsp</title> </head> <body> <s:form action="save"> <s:textfield name="userName" label="User Name" /> <s:password name="password" label="Password" /> <s:submit value="Save" /> </s:form> </body> </html>
用户列表页面list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Users list</title> <style type="text/css"> table { border-collapse: collapse; } </style> </head> <body> <br /><br /><br /><br /> <s:form action="show"> <table border="1" width="50%" align="center"> <tr bgcolor="#cccc00"> <td align="center">UserID</td> <td align="center">UserName</td> <td align="center">Password</td> <td colspan="2" align="center">Options</td> </tr> <s:iterator value="list" id="user" status="st"> <tr <s:if test="#st.odd">style="background-color:#dddddd"</s:if> <s:else>style="background-color:#eeeeee"</s:else>> <td align="center"><s:property value="id" /></td> <td align="center"> <s:property value="userName" /></td> <td align="center"> <s:property value="password" /></td> <td align="center"> <s:url id="update" action="edit"> <s:param name="id"> <s:property value="id" /> </s:param> </s:url> <s:a href="%{update}">update</s:a> </td> <td align="center"> <s:url id="delete" action="delete"> <s:param name="id"> <s:property value="id" /> </s:param> </s:url> <s:a href="%{delete}">delete</s:a> </td> </tr> </s:iterator> <tr> <td colspan="4"> <s:property value="#request.pageBar" escape="false"/> </td> </tr> </table> </s:form> </body> </html>
用户更新页面update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>update.jsp</title> </head> <body> <s:form action="update" method="post"> <s:textfield name="id" label="ID" value="%{id}" readonly="true"/> <s:textfield name="userName" label="User Name" value="%{userName}" required="true"/> <s:textfield name="password" label="Password" value="%{password}" required="true"/> <s:submit value="Update" /> </s:form> </body> </html>
成功页面success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>success</title> </head> <body> This is Success page. <br> <br /><br /> <a href="show.action">显示用户列表</a> <a href="adduser.jsp">添加用户</a> </body> </html>
失败页面error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'error.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> This is my JSP page. <br> </body> </html>
评论
6 楼
qinglong3222664
2013-04-18
SENSEN1234 写道
pageUtil类呢?急用!!
5 楼
gejiushihuai
2012-07-19
怎么没有com.ibatis.sqlmap.client.SqlMapClient; 呢?
4 楼
SENSEN1234
2012-04-06
pageUtil类呢?急用!!
3 楼
Lori_Liu
2012-04-06
很详细,收益很大...
2 楼
netbuddy
2010-09-01
pageUtil类呢?
1 楼
wpfwupengfeiwpf
2010-08-24
写得挺好的,呵呵,不足之处代码没有打包
相关推荐
Struts2.0+Spring+Hibernate整合开发应用,内附struts2.0中文帮助手册,Struts2权威指南,和Myeclipse整合Struts2.0+Spring+Hibernate实现登录的源码.
本文档主要介绍如何在MyEclipse 6.0环境下搭建Struts2.0+Spring2.0+Hibernate3.1的整合环境。 #### 二、Struts2.0配置详解 ##### 1. 创建Web工程 首先,通过MyEclipse 6.0创建一个新的Web工程,这一步是整个项目...
自己研究了一个多星期了,咨询了好多高手,也看了好几个视频,终于做成了S2SH的整合。我的平台是:MyEclipse6.0、Sql Server 2000、...给一些还像我一样处在学习struts2+spring+hibernate整合阶段的朋友做下参考。
开发环境:Windows XP sp3、SQL Server 2005、JDK 1.6、Struts2.1.6、Spring 2.0、Hibernate3.1、MyEclipse 5.5、Tomcat 6.0 使用步骤: 1、下载解压之后,使用IDE导入工程 2、把工程中的“演示数据脚本.sql”导入到...
在Web开发中,Struts2、Spring和Hibernate(简称SSH)是一种常见的三大框架整合,用于构建高效、灵活的企业级应用程序。这个整合方案利用Struts2作为MVC框架负责前端展示逻辑,Spring作为依赖注入(DI)和应用上下文...
图解MyEclipse配置struts+hibernate+spring图解MyEclipse配置struts+hibernate+spring图解MyEclipse配置struts+hibernate+spring图解MyEclipse配置struts+hibernate+spring图解MyEclipse配置struts+hibernate+spring...
《王者归来之JAVA程序开发大全:基于MYECLIPSE平台+STRUTS+HIBERNATE+SPRING主体流框架开发》这本书是为Java开发者提供的一份全面指南,尤其适合那些希望深入理解并掌握企业级Java应用开发的读者。本书以MyEclipse...
本方案提供了一种集成化的开发环境,即"MyEclipse7.5+flex4+spring3.0.5+struts2.2.1+hibernate3.6.0+blazeds4.0.0.14931完美整合方案",它将多个流行的技术框架整合在一起,为Web应用程序开发提供了一个强大的平台...
一键搭建(Struts2.0+Spring2.0+iBatis2.3) 等还有其他功能,本人并不是该插件的作者,只是觉得挺好用所以和大家共享,插件压缩后有28MB,所以分割压缩成2部分上传,需要将2部分都下载下来才可以正常解压
一键搭建(Struts2.0+Spring2.0+iBatis2.3) 等还有其他功能,本人并不是该插件的作者,只是觉得挺好用所以和大家共享,插件压缩后有28MB,所以分割压缩成2部分上传,需要将2部分都下载下来才可以正常解压
《MyEclipse 2015稳定版2.0:补丁、注册机与安装步骤详解》 在IT行业中,开发工具的选择对于程序员的工作效率至关重要。MyEclipse作为一款强大的Java集成开发环境(IDE),深受广大开发者的喜爱。本文将详细讲解...
根据提供的标题、描述以及部分内容,本文将详细解析与MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12相关的技术栈及其应用。这些技术在企业级开发中非常常见,能够帮助开发者构建高效...
1、struts1.2+spring 2.0+hibernate3.2 2、struts的动作交由spring来管理,hibernate的配置集中在spring中配置。 3、增加了声明式事务处理,加强了hibernateTemplate的简单事务处理。 4、完整的Myeclipse的工程文件...
### Struts2.0 + Hibernate3.1 + Spring2.0环境配置与实验指导 #### 一、实验目的与要求 本次实验旨在帮助学生全面掌握使用Struts2.0、Hibernate3.1与Spring2.0这三个开源框架来构建一个简单的企业级应用。通过...
该示例使用MyEclipse 5.5 IDE用来整合四个技术(Struts 1.2, Spring 2.0, Hibernate 3.2和Ajax技术)的轻量级的JavaEE。 操作步骤如下: 1. 下载并解压之后,使用MyEclipse导入工程 2. 找到demo目录中的.sql数据库...
本文将详细介绍如何在MyEclipse 8.5环境下搭建基于Struts2.1、Spring3.0以及Hibernate3.3的SSH框架,并通过图解的方式引导读者完成整个搭建过程。 #### 二、创建 Web 项目 首先,需要在MyEclipse 8.5中创建一个新...
java web 程序开发大全 基于myeclipse平台+struts+hibernate+spring主流框架开发的代码,是一本很好的入门的书,因为大小的关系,分两部分,这是part1,到16章
此补丁适用于MyEclipse-2015-Stable-2.0,其他版本不行,内附破解步骤,,低分出售新的算号器支持Bling版本