个人知识管理系统Version1.0开发记录(11)
(1)匹配单个属性的关键字;(2)匹配单个对象的关键字;(3)匹配对象集合的关键字;(4)基于事件驱动的;(5)实时搜索,参考win7的搜索功能。
1、备份,java代码,数据库数据。
2、oracle数据库,用户操作。
(1)查看数据库默认表空间。
select * from database_properties;
(2)创建用户
create user 用户名 identified by 密码 默认表空间 临时表空间
create user dyl identified by dyl default tablespace users Temporary TABLESPACE Temp;
(3)授权用户
grant connect,resource,dba to dyl;
(4)提交
commit;
(5)查询用户
select * from all_users;
select username,password from dba_users;
3、oracle数据库,oneds表添加主键,实现主键自增长。
(1)表-》约束条件-》添加主键。(2)序列-》新建序列。(3)表-》触发器-》创建序列中的主键。
4、 数据持久层用hibernate实现,定义 oneds 表和 OneDs 类型之间的映射信息。
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 5 <!-- 定义 oneds 表和 OneDs 类型之间的映射信息 --> 6 <hibernate-mapping><!-- <hibernate-mapping package="包名写这也行"> --> 7 <!-- name:包名.类名,指定是哪个类;table:数据库中哪个表;catalog:对 Oracle 而言 为某个用户,不写也行(若用工具则会自动生成) 8 。 例如, select * from oneds 则会在 hibernate.cfg 配置 文件中定义的库(或用户)下去找表。若写了则为 select 9 * from catalog.oneds --> 10 11 <class name="com.dyl.entity.OneDs" table="ONEDS" catalog="DYL"> 12 13 <!-- <id></id>表明此为主键列,且必须写否则 xml 报错,主键映射 --> 14 <id name="id" type="java.lang.Integer"> 15 <column name="ID" /><!-- 或双标签<column name="ID"></column> --> 16 <!-- 指定主键值生成方式,采用序列方式生成主键,仅对添加操作有效 --> 17 <generator class="sequence"> 18 <param name="sequence">ONEDS_SEQUENCE</param> <!--指定序列名 --> 19 </generator> 20 </id> 21 22 <property name="name" type="java.lang.String"><!-- 以下为非主键映射 --> 23 <column name="NAME" /><!--可有 length、not-null 属性,如:length="20" --> 24 </property> 25 <property name="remark" type="java.lang.String"><!-- 映射顺序没关系 --> 26 <column name="REMARK" /> 27 </property> 28 <property name="definition" type="java.lang.String"><!-- 类型要和实体定义的相同 --> 29 <column name="DEFINITION" /> 30 </property> 31 <property name="attribute" type="java.lang.String"><!--列名写错则报错读不到实体 --> 32 <column name="ATTRIBUTE" /><!--junit 测试右键点 Copy Trace 查看错误列 --> 33 </property> 34 <property name="method" type="java.lang.String"> 35 <column name="METHOD" /> 36 </property> 37 <property name="dscase" type="java.lang.String"> 38 <column name="DSCASE" /> 39 </property> 40 <property name="explain" type="java.lang.String"> 41 <column name="EXPLAIN" /> 42 </property> 43 44 <!--也可写成<property name=" " type=" " column=" "></property> ,主键列同理! --> 45 46 </class> 47 </hibernate-mapping>
5、hibernata管家。
1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 <hibernate-configuration> 6 <session-factory> 7 8 <property name="dialect"><!-- 指定方言,决定 Hibernate 生成哪种 SQL --> 9 org.hibernate.dialect.OracleDialect<!-- 不知道数据库版本就写 OracleDialect --> 10 </property><!-- 可在 hibernate3.jar 中 org.hibernate.dialect 包下查看名字 --> 11 12 <property name="connection.url"> 13 jdbc:oracle:thin:@192.168.0.106:1521:PKMS 14 </property> 15 <property name="connection.username">DYL</property> 16 <property name="connection.password">DYL</property> 17 <property name="connection.driver_class"> 18 oracle.jdbc.driver.OracleDriver 19 </property> 20 21 <!-- 框架参数,将 hibernate 底层执行的 SQL 语句从控制台显示 --> 22 <property name="show_sql">true</property> 23 <!-- 格式化显示的 SQL --> 24 <property name="format_sql">true</property> 25 <!-- 指定映射描述文件 --> 26 <mapping resource="com/dyl/entity/OneDs.hbm.xml" /> 27 28 </session-factory> 29 </hibernate-configuration>
6、dao接口,没有本质变化。
1 package com.dyl.dao; 2 3 import java.util.List; 4 5 import com.dyl.entity.OneDs; 6 /** 7 * 知识点dao接口 8 * @author dyl 9 * @date 2014-7-26 10 */ 11 public interface IOneDsDao { 12 public void addOneDs(OneDs od); 13 public void deleteOneDs(int id); 14 public void updateOneDs(OneDs od); 15 public OneDs selectById(int id); 16 public List<OneDs> selectAll(); 17 /** 18 * 根据名称模糊查询 19 */ 20 public List<OneDs>selectByName(String name); 21 }
7、dao实现。
1 package com.dyl.dao.impl; 2 3 import java.util.List; 4 5 import org.hibernate.Query; 6 import org.hibernate.Session; 7 import org.hibernate.Transaction; 8 9 import com.dyl.dao.IOneDsDao; 10 import com.dyl.entity.OneDs; 11 import com.dyl.util.HibernateUtil; 12 13 /** 14 * 知识点数据持久实现 15 * 16 * @author dyl 17 * @date 2014-7-26 18 */ 19 public class OneDsDaoImpl implements IOneDsDao { 20 21 private Session session; 22 23 public OneDsDaoImpl() {// 不想老写获得 session 的方法,就写在构造器中 24 session = HibernateUtil.getSession(); 25 } 26 27 /** 28 * add 方法执行增加操作, 注意 1:获取事务并开启,增删改要注意,查询可以不管事 务,因为没对数据库进行修改; 注意 2:主键值根据 29 * hbm.xml中的<generator>定义生成,执 行后,会先获取序列值,再去做 insert 操作。 即先:select 30 * ONEDS_SEQUENCE.nextval from dual; 然后:insert into 31 */ 32 public void addOneDs(OneDs od) { 33 // Session session=HibernateUtil.getSession(); 34 Transaction tx = session.beginTransaction();// 打开事务 35 session.save(od); 36 tx.commit();// 提交事务 37 session.close();// 释放 38 } 39 40 /** 41 * delete 方法执行删除操作,由于 Hibernate 以“对象”为单位进行数据库操作,所以 42 * 这里要传进去一个对象,虽然是个对象,但还是按主键做条件删除,只要把主键值设置上就 行,其他非主键值不用管。也可先通过 id 查再删 43 */ 44 public void deleteOneDs(int id) { 45 // Session session=HibernateUtil.getSession(); 46 Transaction tx = session.beginTransaction(); 47 OneDs od = new OneDs(); 48 od.setId(id); 49 session.delete(od); 50 tx.commit(); 51 session.close(); 52 } 53 54 /** update 方法执行修改操作 */ 55 public void updateOneDs(OneDs od) { 56 // Session session=HibernateUtil.getSession(); 57 Transaction tx = session.beginTransaction(); 58 session.update(od);// 将 oneds 对象更新到数据库 59 tx.commit(); 60 session.close(); 61 } 62 63 /** 64 * get 方法执行查询,按主键当条件查询,如何判断是主键,是根据写的描述文件来定, get 方法就是 65 * selectById,就是按主键去查,需指定:操作哪个类和 id (主键)条件值即可,其他条件查询做不了 66 */ 67 public OneDs selectById(int id) { 68 // Session session=HibernateUtil.getSession(); 69 OneDs od = (OneDs) session.get(OneDs.class, id); 70 //session.close(); 71 return od; 72 } 73 74 /** 75 * 特殊查询,SQL 语句:String sql="select * from oneds"; HQL 语句: String 76 * hql="from OneDs"; (Hibernate Query Language) 是面向对象的查询语句。 from 后写映射的类名,它是 77 * Hibernate 中特有的查询语句,根据映射的类去查询。 78 */ 79 @SuppressWarnings("unchecked") 80 public List<OneDs> selectAll() { 81 // Session session=HibernateUtil.getSession(); 82 String hql = "from OneDs";// HQL 语句 83 Query query = session.createQuery(hql); 84 List<OneDs> list = query.list();// 执行查询,返回 List 集合 85 session.close(); 86 return list; 87 } 88 89 /** 90 * 根据名称模糊查询 91 */ 92 @SuppressWarnings("unchecked") 93 public List<OneDs> selectByName(String name) { 94 session.beginTransaction(); 95 // SQL代码 96 String hql="from OneDs as od where od.name like :name"; 97 // 获取查询对象 98 Query query = session.createQuery(hql); 99 query.setString("name", "%" + name + "%"); 100 List<OneDs> list = query.list(); 101 // for( int i = 0; i < list.size(); i ++ ) { 102 // OneDs od=list.get(i); 103 // String odName=od.getName(); 104 // System.out.println("odName=" + odName); 105 // } 106 session.getTransaction().commit(); 107 session.close(); 108 return list; 109 } 110 }
8、junit测试。
1 package com.dyl.dao.impl; 2 3 import java.util.List; 4 5 import org.junit.Test; 6 7 import com.dyl.dao.IOneDsDao; 8 import com.dyl.entity.OneDs; 9 10 /** 11 * junit测试 12 * 13 * @author dyl 14 * @date 2014-7-26 15 */ 16 public class OneDsDaoImplTest { 17 18 @Test 19 public void testAdd() {// id 主键列由 Hibernate 管理,这里不用设置 20 IOneDsDao dao=new OneDsDaoImpl(); 21 OneDs od = new OneDs(); 22 od.setAttribute("1234567"); 23 od.setDefinition("1234567"); 24 od.setDscase("1234567"); 25 od.setExplain("1234567"); 26 od.setMethod("1234567"); 27 od.setName("1234567"); 28 od.setRemark("1234567"); 29 dao.addOneDs(od); 30 } 31 32 @Test 33 public void testDelete() { 34 IOneDsDao dao=new OneDsDaoImpl(); 35 dao.deleteOneDs(2); 36 } 37 38 @Test 39 public void testUpdate() { 40 /** 41 * 注意事项:更新部分字段,不能和实现类中的删除那样,做一个对象出来!否 则没设置的字段将被改为空! 42 */ 43 IOneDsDao dao=new OneDsDaoImpl(); 44 OneDs od = dao.selectById(1);// 只能先通过 id 找到带有所有值的对象 45 od.setAttribute("1234567");// 然后再对部分字段进行更新,才能避免把其他字段更新为空 46 od.setDefinition("1234567"); 47 dao.updateOneDs(od); 48 } 49 50 @Test 51 public void testSelectById() {// 当 get 方法没有记录时,返回 null 52 IOneDsDao dao=new OneDsDaoImpl(); 53 OneDs od = dao.selectById(1); 54 System.out.println(od.getAttribute()); 55 System.out.println(od.getDefinition()); 56 System.out.println(od.getDscase()); 57 System.out.println(od.getExplain()); 58 System.out.println(od.getMethod()); 59 } 60 61 @Test 62 public void testFindAll() { 63 IOneDsDao dao=new OneDsDaoImpl(); 64 List<OneDs> list = dao.selectAll(); 65 for (OneDs od : list) { 66 System.out.println(od.getName()); 67 } 68 } 69 70 @Test 71 public void testSelectByName(){ 72 IOneDsDao dao=new OneDsDaoImpl(); 73 String name="好"; 74 List<OneDs>list=dao.selectByName(name); 75 for (OneDs od : list) { 76 System.out.println(od.getName()); 77 } 78 } 79 80 }
9、工厂设计模式,没有本质变化。
1 package com.dyl.util; 2 3 import com.dyl.dao.impl.CompanyDaoImpl; 4 import com.dyl.dao.impl.DepDaoJdbcImpl; 5 import com.dyl.dao.impl.DutyDaoJdbcImpl; 6 import com.dyl.dao.impl.OneDsDaoImpl; 7 import com.dyl.dao.impl.StaffDaoImpl; 8 /** 9 * 工厂设计模式:为调用者提供符合接口要求的对象,方便我们以后采用框架技术进行底层数据访问。 10 * @author dyl 11 * @date 2014-06-01 12 */ 13 public class Factory { 14 public static Object getInstance(String type) { 15 Object obj = null; 16 if ("IOneDsDAO".equals(type)) { 17 obj = new OneDsDaoImpl(); 18 19 } else if ("ICompanyDao".equals(type)) { 20 obj = new CompanyDaoImpl(); 21 22 } else if ("IDepDao".equals(type)) { 23 obj = new DepDaoJdbcImpl(); 24 } else if ("IDutyDao".equals(type)) { 25 obj = new DutyDaoJdbcImpl(); 26 27 } else if ("IStaffDao".equals(type)) { 28 obj = new StaffDaoImpl(); 29 } 30 31 return obj; 32 } 33 }
10、业务逻辑接口,没有本质变化。
1 package com.dyl.service; 2 3 import java.util.List; 4 5 import com.dyl.entity.OneDs; 6 7 /** 8 * 知识点业务逻辑接口 9 * @author dyl 10 * @date 2014-7-26 11 */ 12 public interface IOneDsService { 13 public void addOneDs(OneDs od); 14 public void deleteOneDs(int id); 15 public void updateOneDs(OneDs od); 16 public OneDs selectById(int id); 17 public List<OneDs> selectAll(); 18 19 /** 20 * 根据名称模糊查询 21 */ 22 public List<OneDs>selectByName(String name); 23 }
11、业务逻辑实现,没有本质变化。
1 package com.dyl.service.impl; 2 3 import java.util.List; 4 5 import com.dyl.dao.IOneDsDao; 6 import com.dyl.entity.OneDs; 7 import com.dyl.service.IOneDsService; 8 import com.dyl.util.Factory; 9 10 /** 11 * 知识点业务逻辑实现 12 * @author dyl 13 * @date 2014-7-26 14 */ 15 public class OneDsServiceImpl implements IOneDsService{ 16 17 IOneDsDao dao=(IOneDsDao) Factory.getInstance("IOneDsDAO"); 18 19 public void addOneDs(OneDs od) { 20 dao.addOneDs(od); 21 } 22 23 public void deleteOneDs(int id) { 24 dao.deleteOneDs(id); 25 } 26 27 public void updateOneDs(OneDs od) { 28 dao.updateOneDs(od); 29 } 30 31 public OneDs selectById(int id) { 32 return dao.selectById(id); 33 } 34 35 public List<OneDs> selectAll() { 36 return dao.selectAll(); 37 } 38 39 /** 40 * 根据名称模糊查询 41 */ 42 public List<OneDs>selectByName(String name){ 43 return dao.selectByName(name); 44 } 45 }
12、导入struts2框架和json数据交换格式需要用到的jar包。
13、在web.xml中,配置struts2前端控制器。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 5 id="WebApp_ID" version="2.5"> 6 <display-name></display-name> 7 <welcome-file-list> 8 <welcome-file>index.html</welcome-file> 9 <welcome-file>index.htm</welcome-file> 10 <welcome-file>index.jsp</welcome-file> 11 <welcome-file>default.html</welcome-file> 12 <welcome-file>default.htm</welcome-file> 13 <welcome-file>default.jsp</welcome-file> 14 </welcome-file-list> 15 16 <filter><!-- 前端控制器 --> 17 <filter-name>Struts2</filter-name> 18 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 19 </filter> 20 21 <filter-mapping> 22 <filter-name>Struts2</filter-name> 23 <url-pattern>/*</url-pattern><!-- 表示所有的请求都要经过该过滤器 --> 24 </filter-mapping> 25 26 </web-app>
14、基础action,提供一些基本的公共功能。
1 package com.dyl.util; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import javax.servlet.ServletContext; 6 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletResponse; 8 import javax.servlet.http.HttpSession; 9 10 import net.sf.json.JSONArray; 11 import net.sf.json.JSONObject; 12 13 import org.apache.struts2.ServletActionContext; 14 // class BaseAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware 15 16 import com.opensymphony.xwork2.ActionSupport; 17 18 /** 19 * 基础action,提供一些基本的公共功能。 20 * 21 * Action接口有: 22 * public static final java.lang.String SUCCESS = "success"; 23 * public static final java.lang.String NONE = "none"; 24 * public static final java.lang.String ERROR = "error"; 25 * public static final java.lang.String INPUT = "input"; 26 * public static final java.lang.String LOGIN = "login"; 27 * public abstract java.lang.String execute() throws java.lang.Exception; 28 * 29 * extends ActionSupport 30 * 31 * 由JavaDoc可知,ActionSupport类实现了接口: 32 * com.opensymphony.xwork2.Action。 33 * com.opensymphony.xwork2.LoaleProvider。 34 * com.opensymphony.xwork2.TextProvider。 35 * com.opensymphony.xwork2.Validateable。 36 * com.opensymphony.xwork2.ValidationAware。 37 * com.uwyn.rife.continuations.ContinuableObject。 38 * java.io.Serializable。 39 * java.lang.Cloneable。 40 * 41 * 例如:(1)数据校验。Actionsupport这个工具类在实现了Action接口的基础上还定义了一个validate()方法,重写该方法, 42 * 它会在execute()方法之前执行,如校验失败,会转入input处,必须在配置该Action时配置input属性。 43 * 例如:(2)实现国际化。Actionsupport提供了一个getText(String key)方法实现国际化,该方法从资源文件上获取国际化信息。 44 * 这样在自定义标签时可以定义一个变量为new actionsupport对象实现国际化。 45 * 例如:(3)序列化。class ActionSupport implements java.io.Serializable 46 * 47 * @author dyl 48 * @date 2014-7-12 49 */ 50 public class BaseAction extends ActionSupport { 51 private static final long serialVersionUID = 184151487358146406L; 52 53 /** 54 * 发送字符串 55 * 56 * out.write()是字节输出流的方法 57 * out.print()是字符输出流的方法 58 * servelt中是HttpServletResponse.getWriter()取得的字符输出流 59 * jsp隐式变量out是字符输出流 60 * @param str 61 */ 62 public void outString(String str) { 63 try { 64 PrintWriter out = getResponse().getWriter(); 65 // out.write(str); 66 out.print(str); 67 } catch (IOException e) { 68 e.printStackTrace(); 69 } 70 } 71 72 /** 73 * 发送xml数据 74 * 75 * Tomcat的安装目录\conf\web.xml 中就定义了大量MIME类型 ,可以参考。 76 * response.setContentType("text/html; charset=utf-8"); html 77 * response.setContentType("text/plain; charset=utf-8"); 文本 78 * response.setContentType("text/javascript; charset=utf-8"); json数据 79 * response.setContentType("application/xml; charset=utf-8"); xml数据 80 * @param xmlStr 81 */ 82 public void outXMLString(String xmlStr) { 83 getResponse().setContentType("application/xml;charset=UTF-8");// 指定对服务器响应进行重新编码的编码 84 outString(xmlStr); 85 } 86 87 /** 88 * 发送json数据 89 * 90 * Tomcat的安装目录\conf\web.xml 中就定义了大量MIME类型 ,可以参考。 91 * response.setContentType("text/html; charset=utf-8"); html 92 * response.setContentType("text/plain; charset=utf-8"); 文本 93 * response.setContentType("text/javascript; charset=utf-8"); json数据 94 * response.setContentType("application/xml; charset=utf-8"); xml数据 95 * @param xmlStr 96 */ 97 public void outJsonString(String str) { 98 getResponse().setContentType("text/javascript;charset=UTF-8");// 设置发送到客户端的响应的内容类型 99 outString(str); 100 } 101 102 /** 103 * Java对象转换成一个JSON字符串,使用JSONObject.fromObject() 104 * 105 * @param obj 106 */ 107 public void outJson(Object obj) { 108 outJsonString(JSONObject.fromObject(obj).toString()); 109 } 110 111 /** 112 * Java对象组成的集合转换成一个JSON字符串,使用JSONArray.fromObject() 113 * 114 * @param objs 115 */ 116 public void outJsonArray(Object objs) { 117 outJsonString(JSONArray.fromObject(objs).toString()); 118 } 119 120 /** 121 * 获得request 122 * 123 * ServletActionContext返回的是Servlet使用类型 124 * @return 125 */ 126 public HttpServletRequest getRequest() { 127 return ServletActionContext.getRequest(); 128 } 129 130 /** 131 * 获得response 132 * 133 * ServletActionContext返回的是Servlet使用类型 134 * @return 135 */ 136 public HttpServletResponse getResponse() { 137 return ServletActionContext.getResponse(); 138 } 139 140 /** 141 * 获得session 142 * 143 * 后台:HttpSession session = request.getSession(); 144 * @return 145 */ 146 public HttpSession getSession() { 147 return getRequest().getSession(); 148 } 149 150 /** 151 * 获得servlet上下文 152 * 153 * ServletActionContext返回的是Servlet使用类型 154 * 155 * 后台:ServletContext servletContext = this.getServletContext(); 156 * servletContext.setAttribute(("username",username); 157 * JSP网页:application.getAttribute("username"); 158 * @return 159 */ 160 public ServletContext getServletContext() { 161 return ServletActionContext.getServletContext(); 162 } 163 164 /** 165 * 获得绝对路径 166 * request.getSession().getServletContext().getRealPath("/")+""; 167 * 168 * 比较:获得相对路径,request.getContextPath() 169 * @param path 170 * @return 171 */ 172 public String getRealPath(String path) { 173 return getServletContext().getRealPath(path); 174 } 175 176 }
15、Action类。
1 package com.dyl.action; 2 3 import java.util.List; 4 import com.dyl.entity.OneDs; 5 import com.dyl.service.IOneDsService; 6 import com.dyl.service.impl.OneDsServiceImpl; 7 import com.dyl.util.BaseAction; 8 9 /** 10 * 知识点控制器 11 * 12 * @author dyl 13 * @date 2014-7-27 14 */ 15 public class OneDsAction extends BaseAction { 16 17 private static final long serialVersionUID = 3518833679938898354L; 18 19 private List<OneDs> odList; // 使用josn返回List对象 20 21 // 为上面的的属性提供get,Set方法 22 public List<OneDs> getOdList() { 23 return odList; 24 } 25 26 public void setOdList(List<OneDs> odList) { 27 this.odList = odList; 28 } 29 30 /** 31 * 返回List对象 32 * 33 * @return 34 */ 35 public String returnList() { 36 37 String name = super.getRequest().getParameter("odName"); 38 //System.out.println(name); 39 IOneDsService ds = new OneDsServiceImpl(); 40 odList = ds.selectByName(name); 41 // for (int i = 0; i < odList.size(); i++) { 42 // System.out.println(odList.get(i).getName()); 43 // } 44 45 return "list"; 46 } 47 48 }
16、控制器配置文件struts.xml。
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 4 "http://struts.apache.org/dtds/struts-2.0.dtd"> 5 6 <struts> 7 8 <package name="default" namespace="/" extends="json-default"> 9 <action name="OneDsAction" class="com.dyl.action.OneDsAction"> 10 11 <!-- 返回List对象 --> 12 <result name="list" type="json"></result> 13 14 </action> 15 </package> 16 17 </struts>
17、显示界面。
1 <!DOCTYPE HTML> 2 3 <html> 4 <head> 5 6 <title>知识点</title> 7 8 <meta charset="utf-8"> 9 10 <script src="js/jquery.js"></script> 11 <script src="js/index.js"></script> 12 13 </head> 14 15 <body> 16 17 <input id="odName" type="text" value="输出名称关键字进行查询" 18 onfocus="if (value =='输出名称关键字进行查询'){value =''}" 19 onblur="if (value ==''){value='输出名称关键字进行查询'}" /> 20 <input id="selectOdName" type="button" value="查询" /> 21 <br /> 22 <br /> 23 <!-- 信息层 --> 24 <div id="message"></div> 25 26 </body> 27 </html>
18、事件驱动。
1 //初始加载页面时 2 $(document).ready( 3 function() { 4 5 // 为按钮添加鼠标单击事件 6 $("#selectOdName").click( 7 function() { 8 9 var odName=document.getElementById("odName").value; 10 //alert(odName); 11 12 // 使用jQuery中的$.ajax({});Ajax方法 13 $.ajax({ 14 url : "OneDsAction!returnList.action", 15 type : "POST", 16 data : {odName:odName}, 17 dataType : "json", 18 success : function(data) { 19 //alert(data); 20 // 查看Object对象内容 21 for(i in data){ 22 //alert(i); // 获得属性 23 //alert(data[i]); // 获得属性值 24 } 25 // alert(data.odList); 26 // var test=data.odList; 27 // for(j in test){ 28 // alert(j); 29 // alert(test[j]); 30 // var b=test[j]; 31 // for(k in b){ 32 // alert(k); 33 // alert(b[k]); 34 // } 35 // } 36 37 // 清空显示层中的数据 38 $("#message").html(""); 39 // 使用jQuery中的each(data,function(){});函数 40 // 从data.odList获取OneDs对象放入value之中 41 $.each(data.odList, function(i, value) { 42 // alert(i); 43 // alert(value.name); 44 $("#message").append("<div>第" + (i + 1) + "个:</div>") 45 .append("<div><font color='red'>编号:" + value.id + "</font></div>") 46 .append("<div><font color='red'>名称:" + value.name + "</font></div>") 47 .append("<div><font color='red'>简介:" + value.remark + "</font></div>") 48 .append("<div><font color='red'>定义:" + value.definition + "</font></div>") 49 .append("<div><font color='red'>属性:" + value.attribute + "</font></div>") 50 .append("<div><font color='red'>方法:" + value.method + "</font></div>") 51 .append("<div><font color='red'>实例:" + value.dscase + "</font></div>") 52 .append("<div><font color='red'>说明:" + value.explain + "</font></div>"); 53 }); 54 } 55 }); 56 57 }); 58 59 });
19、tomcat加入系统服务,方便tomcat应用自动启动,tomcat应用编译好后放在webapps里。修改xml配置文件,需要重新编译,eclipse->project->clean。
(1)进入D:/ProgramFiles/Tomcat6/bin目录,找到startup.bat、shutdown.bat、service.bat。
(2)修改startup.bat
在第一行前加入如下内容:
SET JAVA_HOME=D:\ProgramFiles\tool\Java\jdk6
SET CATALINA_HOME=D:\ProgramFiles\Tomcat6
JAVA_HOME就是环境变量中配置的内容.CATALINA_HOME就是Tomcat的目录
(3)修改shutdown.bat
在第一行前加入如下内容:
SET JAVA_HOME=D:\ProgramFiles\tool\Java\jdk6
SET CATALINA_HOME=D:\ProgramFiles\Tomcat6
(4)修改service.bat
在第一行前加:
set CATALINA_HOME=D:\ProgramFiles\Tocmat6
set SERVICE_NAME=Tomcat6
set PR_DISPLAYNAME=Apache Tomcat
第一行是环境变量中配置的内容,第二行是服务的名字,在命令行中通过该名字进行服务的控制(启动/关闭)
第三行是服务的显示名称,即在服务管理器中显示的名称.
(5)添加服务
在DOS界面下,进入Tomcat解压目录的bin目录,输入命令:
service remove tomcat6
service.bat install
如果安装成功,会提示:The service 'Tomcat6(或者修改后的SERVICE_NAME)' has been installed
20、设置链接到桌面,避免每次输出。桌面右键新建-》快捷方式-》输入url和名称。
21、工程结构图。