隨筆 - 11  文章 - 11  trackbacks - 0

          留言簿(2)

          隨筆分類(13)

          隨筆檔案(11)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          在Struts1.1-1.2中如果不想沒有登錄的用戶訪問一些action,可以擴展RequestProcessor,并重載processProprocess方法,在其中進行驗證

          public class CustomRequestProcessor
                  extends RequestProcessor {
              protected boolean processPreprocess (
                      HttpServletRequest request,
                      HttpServletResponse response) {
                  HttpSession session = request.getSession(false);
                  //If user is trying to access login page
                  // then don't check
                  if( request.getServletPath().equals("/loginInput.do")
                      || request.getServletPath().equals("/login.do") )
                      return true;
                  //Check if userName attribute is there is session.
                  //If so, it means user has allready logged in
                  if( session != null &&
                  session.getAttribute("userName") != null)
                      return true;
                  else{
                      try{
                          //If no redirect user to login Page
                          request.getRequestDispatcher 
                              ("/Login.jsp").forward(request,response);
                      }catch(Exception ex){
                      }
                  }
                  return false;
              }
          }
          

          相應的,在struts-config.xml中加入controller元素

          <controller>
           <set-property  property="processorClass"
           value="com.sample.util.CustomRequestProcessor"/>
          </controller>
          

          但剛才看到在Struts1.3中,已經不再使用RequestProcessor,而是用ComposableRequestProcessor 來實現自定義的request響應。






          posted @ 2007-04-09 18:52 hijeff 閱讀(446) | 評論 (0)編輯 收藏

          三個@Entity類Tc, Tracer, Track是三向關聯的的表, @Embeddable類TcTracer則存儲著三個表的ForeignKey

          @Entity
          @Table(name= "tc", catalog="first_hiber")
          public class Tc {
                @org.hibernate.annotations.CollectionOfElements
                @JoinTable(name="tc_tracer", joinColumns=@JoinColumn(name="tc_id"))
                private Set<TcTracer> tcTracers = new HashSet<TcTracer>();
          
                @Id @GeneratedValue
                @Column(name="tc_id", nullable= false)
                private Long id;
          }
          
            @Embeddable
            @Table(name="tc_tracer")
            public class TcTracer {
                @org.hibernate.annotations.Parent
                private Tc tc;
            
          @ManyToOne(cascade=CascadeType.ALL) @JoinColumn(name="tracer_id", nullable=false, updatable=false) private Tracer tracer; @ManyToOne(cascade=CascadeType.ALL) @JoinColumn(name="track_id", nullable=false, updatable=false) private Track track; }

          如上,將TcTracer作為Tc的子元素,從而實現Tc的三相關聯。

          用HQL可以通過特定的Tc,Tracer得到對應的所有Track:

            select tctracers.track
            from Tc tc
                join tc.tcTracers tctracers
            where tc.name="tc name"
                and tctracers.tracer.name="tracer name"
          
           List<Track> tracks = session.createQuery(HQL).list();
          
          posted @ 2007-04-02 17:45 hijeff 閱讀(386) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 忻州市| 贡山| 石屏县| 黑河市| 黎城县| 银川市| 襄汾县| 驻马店市| 丰台区| 吉林市| 汝城县| 巧家县| 宜宾县| 洪湖市| 南阳市| 渑池县| 内乡县| 临猗县| 肃宁县| 汉中市| 米易县| 靖江市| 南城县| 西城区| 威海市| 疏附县| 安顺市| 高邮市| 通江县| 新沂市| 江川县| 浮山县| 确山县| 岐山县| 乾安县| 绥棱县| 五河县| 平度市| 尉氏县| 宁津县| 南昌县|