<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 41,  comments - 8,  trackbacks - 0
    struts2json plugin的位置在:http://code.google.com/p/jsonplugin/
    下載json plugin的jar包,放到/WEB-INF/lib/目錄下就可以了

    Spring + Struts + JPA的項(xiàng)目結(jié)構(gòu)如其他例子中的一致
    首先是web.xml
    xml 代碼
     
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app id="WebApp_ID" version="2.4"  
    3.     xmlns="http://java.sun.com/xml/ns/j2ee"  
    4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
    6.     <display-name>quickstart</display-name>  
    7.     <filter>  
    8.         <filter-name>struts2</filter-name>  
    9.         <filter-class>  
    10.             org.apache.struts2.dispatcher.FilterDispatcher  
    11.         </filter-class>  
    12.     </filter>  
    13.     <filter>  
    14.         <filter-name>jpaFilter</filter-name>  
    15.         <filter-class>  
    16.             org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter  
    17.         </filter-class>  
    18.         <init-param>  
    19.             <param-name>entityManagerFactory</param-name>  
    20.             <param-value>entityManagerFactory</param-value>  
    21.         </init-param>  
    22.     </filter>  
    23.     <filter-mapping>  
    24.         <filter-name>jpaFilter</filter-name>  
    25.         <url-pattern>*.action</url-pattern>  
    26.     </filter-mapping>  
    27.     <filter-mapping>  
    28.         <filter-name>struts2</filter-name>  
    29.         <url-pattern>/*</url-pattern>  
    30.     </filter-mapping>  
    31.     <welcome-file-list>  
    32.         <welcome-file>index.jsp</welcome-file>  
    33.     </welcome-file-list>  
    34.     <listener>  
    35.         <listener-class>  
    36.             org.springframework.web.context.ContextLoaderListener  
    37.         </listener-class>  
    38.     </listener>  
    39. </web-app>  

    加入jpaFilter,是為了不讓hibernate的session過早關(guān)閉,因?yàn)橛械腶ction會通過ajax動態(tài)調(diào)用。
    下面是struts.xml,注意struts.xml需要放在源代碼目錄下面:

    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. <struts>  
    6.     <constant name="struts.objectFactory" value="spring" />  
    7.     <constant name="struts.devMode" value="true" />  
    8.     <constant name="struts.i18n.encoding" value="UTF-8"/>  
    9.     <package name="person" extends="json-default">  
    10.         <action name="list" method="execute" class="personaction">  
    11.             <result type="json"/>  
    12.         </action>         
    13.     </package>  
    14. </struts>  

    這里注意,
    struts.objectFactory告訴struts所有的action都到spring的上下文里面去找,另外還需要注意,我們自己的包要繼承自json-default,這樣才可以在result的type屬性中使用json
    下面是spring的配置文件applicationContext.xml:
    xml 代碼
     
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.     xmlns:aop="http://www.springframework.org/schema/aop"  
    5.     xmlns:tx="http://www.springframework.org/schema/tx"  
    6.     xsi:schemaLocation="  
    7.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
    8.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd  
    9.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  
    10.     <bean  
    11.         class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />  
    12.     <bean id="entityManagerFactory"  
    13.         class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
    14.         <property name="dataSource" ref="dataSource" />  
    15.         <property name="jpaVendorAdapter">  
    16.             <bean  
    17.                 class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">  
    18.                 <property name="database" value="MYSQL" />  
    19.                 <property name="showSql" value="true" />  
    20.             </bean>  
    21.         </property>  
    22.     </bean>  
    23.     <bean id="dataSource"  
    24.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
    25.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
    26.         <property name="url" value="jdbc:mysql://localhost/extjs" />  
    27.         <property name="username" value="root" />  
    28.         <property name="password" value="" />  
    29.     </bean>  
    30.   
    31.       
    32.     <bean id="transactionManager"  
    33.         class="org.springframework.orm.jpa.JpaTransactionManager">  
    34.         <property name="entityManagerFactory"  
    35.             ref="entityManagerFactory" />  
    36.     </bean>  
    37.     <tx:annotation-driven transaction-manager="transactionManager" />  
    38.     <!--Service 開始 -->  
    39.     <bean id="personService" class="com.myext.service.impl.PersonServiceJpaImpl"/>  
    40.     <bean id="personaction" class="com.myext.action.PersonPageAction">  
    41.         <property name="person" ref="personService"/>  
    42.     </bean>  
    43. </beans>  

    這里的bean personaction和strutx.xml中的action class一致就可以了,下面是代碼:
    action:
    java 代碼
    1. package com.myext.action;
    2. import java.util.ArrayList;
    3. import java.util.List;
    4. import com.myext.service.PersonService;
    5. public class PersonPageAction {
    6. private int limit=10;
    7. private int start=0;
    8. private PersonService person;
    9. private int total=0;
    10. private List persons = new ArrayList();
    11. private boolean success=true;
    12. public boolean getSuccess(){
    13. return this.success;
    14. }
    15. public void setLimit(int limit) {
    16. this.limit = limit;
    17. }
    18. public void setStart(int start) {
    19. this.start = start;
    20. }
    21. public void setPerson(PersonService person) {
    22. this.person = person;
    23. }
    24. public int getTotal() {
    25. return total;
    26. }
    27. public void setTotal(int total) {
    28. this.total = total;
    29. }
    30. public List getPersons() {
    31. return persons;
    32. }
    33. public void setPersons(List persons) {
    34. this.persons = persons;
    35. }
    36. public String execute(){
    37. this.total = person.getTotal();
    38. this.persons = person.getPage(this.start, this.limit);
    39. return "success";
    40. }
    41. }
    service:
    java 代碼
    1. package com.myext.service.impl;
    2. import java.util.List;
    3. import javax.persistence.EntityManager;
    4. import javax.persistence.PersistenceContext;
    5. import javax.persistence.Query;
    6. import com.myext.model.Person;
    7. import com.myext.service.PersonService;
    8. public class PersonServiceJpaImpl implements PersonService {
    9. private EntityManager em;
    10. private static String poname = Person.class.getName();
    11. @PersistenceContext
    12. public void setEntityManager(EntityManager em){
    13. this.em = em;
    14. }
    15. @SuppressWarnings("unchecked")
    16. @Override
    17. public List getPage( int start, int limit) {
    18. Query q = this.em.createQuery("from " + poname );
    19. q.setFirstResult(start);
    20. q.setMaxResults(limit);
    21. return q.getResultList();
    22. }
    23. @Override
    24. public int getTotal() {
    25. return this.em.createQuery("from " + poname).getResultList().size();
    26. }
    27. }
    頁面的代碼:
    xml 代碼
    1. xml version="1.0" encoding="UTF-8" ?>
    2. <%@ page language="java" contentType="text/html; charset=UTF-8"
    3. pageEncoding="UTF-8"%>
    4. >
    5. <html xmlns="http://www.w3.org/1999/xhtml">
    6. <head>
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    8. <title>Grid3title>
    9. <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
    10. <script type="text/javascript" src="extjs/adapter/ext/ext-base.js">script>
    11. <script type="text/javascript" src="extjs/ext-all.js">script>
    12. <script type="text/javascript" src="extjs/ext-lang-zh_CN.js">script>
    13. head>
    14. <body>
    15. <script type="text/javascript" src="grid3.js">script>
    16. <div id="grid3" >
    17. div>
    18. body>
    19. html>
    grid3.js代碼
    js 代碼
    1. /**
    2. * @author fox
    3. */
    4. Ext.onReady(function(){
    5. Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif';
    6. Ext.QuickTips.init();
    7. var sm = new Ext.grid.CheckboxSelectionModel(); //CheckBox選擇列
    8. var cm = new Ext.grid.ColumnModel([
    9. new Ext.grid.RowNumberer(), //行號列
    10. sm,
    11. {header:'編號',dataIndex:'id'},
    12. {header:'性別',dataIndex:'sex',renderer:function(value){
    13. if(value=='male'){
    14. return "";
    15. }else{
    16. return "";
    17. }
    18. }}, //增加性別,自定義renderer,即顯示的樣式,可以加html代碼,來顯示圖片等。
    19. {header:'名稱',dataIndex:'name'},
    20. {header:'描述',dataIndex:'descn'}
    21. ]);
    22. var ds = new Ext.data.Store({
    23. proxy: new Ext.data.HttpProxy({url:'list.action'}),//調(diào)用的動作
    24. reader: new Ext.data.JsonReader({
    25. totalProperty: 'total',
    26. root: 'persons',
    27. successProperty :'success'
    28. }, [
    29. {name: 'id',mapping:'id',type:'int'},
    30. {name: 'sex',mapping:'sex',type:'string'},
    31. {name: 'name',mapping:'name',type:'string'},
    32. {name: 'descn',mapping:'descn',type:'string'} //列的映射
    33. ])
    34. });
    35. var grid = new Ext.grid.GridPanel({
    36. el: 'grid3',
    37. ds: ds,
    38. sm: sm,
    39. cm: cm,
    40. width:700,
    41. height:280,
    42. bbar: new Ext.PagingToolbar({
    43. pageSize: 10,
    44. store: ds,
    45. displayInfo: true,
    46. displayMsg: '顯示第 {0} 條到 {1} 條記錄,一共 {2} 條',
    47. emptyMsg: "沒有記錄"
    48. }) //頁腳顯示分頁
    49. });
    50. //el:指定html元素用于顯示grid
    51. grid.render();//渲染表格
    52. ds.load({params:{start:0, limit:10}}); //加載數(shù)據(jù)
    53. });
    注意,這里的gridpanel一定要設(shè)置高度,否則數(shù)據(jù)是顯示不出來的。
    最后啟動tomcat,在瀏覽器里輸入http://localhost:8080/extjs/grid3.jsp,就可以看到效果
    posted on 2008-10-04 14:35 Loy Fu 閱讀(4532) 評論(2)  編輯  收藏 所屬分類: ext
    主站蜘蛛池模板: 亚洲熟妇无码久久精品| 香蕉免费一区二区三区| 亚洲最大的成人网站| 亚洲不卡av不卡一区二区| 免费在线观看中文字幕| 在线看片人成视频免费无遮挡| 4虎1515hh永久免费| 久久中文字幕免费视频| 中文字幕免费在线观看动作大片| 国产成人精品久久亚洲高清不卡 | 特级aa**毛片免费观看| 亚洲人成色4444在线观看| 亚洲成人在线免费观看| 久久亚洲精品成人av无码网站| 亚洲自偷自偷偷色无码中文| 亚洲精品国产成人影院| 国产一级高清免费观看| 日本一区免费电影| 在线观看免费为成年视频| 国产三级在线观看免费| 美女视频黄是免费的网址| 性短视频在线观看免费不卡流畅| 在线成人爽a毛片免费软件| 久久久久久AV无码免费网站下载 | 亚洲高清美女一区二区三区| 亚洲人成影院在线| 亚洲美女视频一区| 亚洲国产精品成人精品软件| 亚洲人成综合在线播放| 77777亚洲午夜久久多喷| 97se亚洲国产综合自在线 | 亚洲成av人片在线观看天堂无码| 国产免费观看黄AV片| 四虎精品亚洲一区二区三区| 午夜亚洲国产成人不卡在线| xvideos亚洲永久网址| 亚洲欧洲中文日韩av乱码| 久久精品国产精品亚洲下载| 亚洲熟妇丰满多毛XXXX| 久久国产精品亚洲综合| 亚洲综合综合在线|