个人知识管理系统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>

OneDs.hbm.xml

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>

hibernate.cfg.xml

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 }

IOneDsDao

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 }

OneDsDaoImpl

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 }

OneDsDaoImplTest

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 }

Factory

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 }

IOneDsService

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 }

OneDsServiceImpl

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>

web.xml

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 }

BaseAction

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 }

OneDsAction

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>  

struts.xml

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>

index.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         });

index.js

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、工程结构图。

个人知识管理系统Version1.0开发记录(11)

时间: 2024-10-13 22:23:40

个人知识管理系统Version1.0开发记录(11)的相关文章

个人知识管理系统Version1.0开发记录(10)

物理分页 这次我们运用Mybatis拦截器来实现物理分页,后面会运用动态sql来实现,或者运用Map/CollectionUtils/StringUtils编写工具类来实现.oracle是运用的rownum,mysql是运用的limit offset,pagesize.代码中有大量注释,可以参考Mybatis基本原理一起阅读.后面,我们会根据一些实际开发需要,把物理分页功能的代码封装成jar包,以后直接调用就好了,比如Mybatis+Spring3的运行环境,可以采用Mybatis动态sql来实

个人知识管理系统Version1.0开发记录(08)

切入点 前面,我们已经搭建好了web端的一种基本结构,需要进一步定位的主要问题有三点: 1.界面的选择和确定,用extjs做的初步样式,进一步改动为jqueryUI/html,再进一步改变为HTML5等.我们思考一种用户思维,只要有一个地方让用户不喜欢,用户就会全盘否定该款软件:所以,软件界面一定要简单.精致.能引起用户的兴趣.符合用户习惯和用户思维. 2.框架的选择和确定,struts2,hibernate/mybatis,spring等,在编写知识体核心功能模块前,需要完成选择和改写. 3.

个人知识管理系统Version1.0开发记录(04)

demo model 我们采用mvc软件架构模式,方便以后用Struts2框架技术优化.重构.封装.这次主要设计一些常用的方法工具,即数据访问逻辑.工具:eclipse.oracle.sqldeveloper. 思路如下: 1.  用sqldeveloper新建表oneds,写入一条name="cookie"的数据. 细节: 参数越多,越要细致检查单词拼写. 2.  用java读取和写入对象属性,与数据库互动. 3.  用java进行数据访问,先完成五个方法,查询所有知识点,增加知识点

个人知识管理系统Version1.0开发记录(06)

demo view 夜已深,我们先简单演示一下,完成一个小段落了.涉及工具及技术知识:图形处理软件photoshop cs6,js类库ext. 思路如下: 1.下载ps6,有破解版本的,dll文件覆盖即可,玩个把小时,看看文字.图片jpg.png.gif动画怎么玩的,实际用时找对应方法. 2.下载ext2,docs(这个就是API)-->examples-->HelloWorld.工具栏.菜单栏.表单.面板.布局.事件.类.DOM...... 3.整理结构,注释代码,记录日志. 4.管理员登陆

个人知识管理系统Version1.0开发记录(03)

demo  设 计 一个知识点demo,在数据库和用户界面的互动事件.分三个层次,数据存储,数据方法工具,数据呈现界面.这一次先完成数据存储,按以下逻辑实现.工具:eclipse,oracle数据库,sqldeveloper(改用oracle的sqldeveloper).(当后面数据库复杂时可以考虑PowerDesigner.) 1.考虑软件功能.数据方法.商业元素.逻辑扩展等实用因素,设计实体类. 2.用jdbc连接oracle数据库. 3.数据储存在数据库中,分析oracle数据库的数据类型

个人知识管理系统Version1.0开发记录(01)

架 构 描 述 01.数据层,数据源,有形资源入库,无形资源整理,对外搜索引擎,对内平台搜索,数据类型(文字.图片.声音.视频.组合),数据时空优化,数据安全方案(数据进站关卡,数据出战关卡),数据并发方案,大数据分布式处理. 02.数据层,数据库,概念数据,物理数据,面向对象,业务程序,数据流程,数据ER图(实体.属性.关联). 03.数据层,数据集,数据采集.数据传递.数据储存.数据加工.数据维护.数据使用. -----------------------------------------

个人知识管理系统Version1.0开发记录(02)

第 一 步 做 什 么 我们该如何入手呢?先来看看目前常用的三个方法. 1.从事物产生的源头出发,层层推进,步步验证,最后开花结果.这种方法经常用于科研项目,或者三期以后的工程,国家政府项目用的较多. 2.以结果为导向的方法,我们需要什么结果,逆向推论出我们该如何进行工作.这种方法常用于盈利性比较强的短期项目,或者就是为了赶工的. 3.大项目分解成中项目,中项目分解成小项目.每个项目单位功能齐全,小项目组合成大项目,功能运行正常,也就是常用的敏捷开发方式. 考虑到实际工作生活情况,和我们的出发点

个人知识管理系统Version1.0开发记录(13)

英 语 短 文 需 求 分 析   版本号 创建人 创建时间 更新人 更新时间 KBS 1.1.0 duyaolin 2015/2/2   1.功能描述 编写一个工具类功能模块,可以收集.整理平时工作中常见英语词汇.句子.短文,和这些英语内容相关问题的解决方案等,提高工作效率.此功能模块归属为,学习管理.英语学习.计算机专业英语运用下的一个需求版本. 2.需求分析 2.1 管理英语短文 2.1.1 功能描述 收集工作中常用英语短文(包括词汇.短语.句子). 2.1.2 用例图 2.1.3 用例分

个人知识管理系统Version1.0开发记录(05)

demo controller我们从前面的实现过程可以得出三种普遍使用的信息处理方式:1.操作数据库,对数据进行增删改查,比如运用sqldevloper查看数据信息.2.运用计算机程序语言,对数据进行增删改查,比如eclipse->window->show view->console.3.通过用户界面,对数据进行增删改查,比如各种browser.PC端.APP端. 我们编写的软件,是数据的一系列操作行为,数据库方式<-->计算机程序语言方式<-->用户界面方式(U