教育行政や教材発注システムの抜粋コード

一、登录界面(部分)
<DIV CLASS = "コンテナ"> 
    <DIV CLASS = "行"> 
        <DIV CLASS = "COL-MD-8 COL-MD-オフセット-2"> 
            <DIV CLASS = "ログインパネルパネルパネル-デフォルト"> 
                <divのクラスには、="パネルの見出し"> 
                    <h3のクラスには、="パネル・タイトル">请登录</ H3> 
                </ div> 
                <divのクラス="パネル体"> 
                    <フォームの役割= "フォーム" ACTION = "$ {pageContext.request.contextPath} /ログイン" METHOD = "POST"> 
                        <フィールドセット> 
                            <DIV CLASS = "フォームグループ">
                                <入力クラス= "フォームコントロール"プレースホルダ= "账户名" NAME = "ユーザ名"オートフォーカス>  
                            </ div>
                            <DIV CLASS = "フォームグループ"> 
                                <入力クラス= "フォームコントロール"プレースホルダ= "密码" NAME = "パスワード"タイプ= "パスワード"> 
                            </ div> 
                            <DIV CLASS = "チェックボックス"> 
                                <ラベル> 
                                    <入力名= "覚えて"タイプ= "チェックボックス"値= "リメンバー・ミー">记住我
                                </ label>は
                            </ DIV> 
                            
                            の<input type = "登录" =値"を提出する"クラス= "BTN BTN-主なフォーム-コントロール">
                        </フィールドセット> 
                    </ FORM> 
                </ div> 
            </ div>
        </ div> 
    </ div> 
</ div>  
第二に、着陸コントローラ

@Controller 
パブリッククラスLoginController { 
 
    @Resource(名= "userBizImpl")
    UserBiz userBiz。
 
    ( "ログイン")@RequestMapping 
    パブリック文字列ログイン(HttpServletRequestのREQ、モデルモデル、HttpSessionのセッション){ 
        文字列exceptionClassName =(文字列)req.getAttribute( "shiroLoginFailure")。
        文字列のエラー= NULL; 
        //异常处理
        場合(UnknownAccountException.class.getName()に等しい(exceptionClassName)){ 
            エラー= "用户名/密码错误"。
        }そうであれば(IncorrectCredentialsException.class.getName()。等号(exceptionClassName)){ 
            エラー= "用户名/密码错误"
        }そうであれば(!exceptionClassName = NULL){ 
            エラー= "其他错误:" + exceptionClassName。
 
        // TODO动态生成页面     
        org.apache.shiro.subject.Subject被写体= SecurityUtils.getSubject()。
        ブールにisAuthenticated = subject.isAuthenticated()。
 
        (にisAuthenticated){場合
            のSystem.out.println( "!"); 
            文字列プリンシパル=(文字列)subject.getPrincipal(); 
            session.setAttribute( "ユーザ名"、校長); 
            //不同角色对应的页面
            スイッチ(主){ 
                場合、 "管理者":
                    リターン"/管理/メイン"; 
                ケース「先生」:
                ケース「学生」:
                    リターン「/学生/メイン」; 
                ケース" 
                    リターンは、「リダイレクト:supplier.do/supplier.viewを」; 
            } 
        } 
        
        リターン"リダイレクト:login.jspをします"; 
    } 
 
 
} 
三、ユーザ控制层实现(部分)

@Service 
パブリッククラスUserBizImplはUserBiz {実装
 
    @Resource 
    UserDao userDaoは、
 
    @Resource 
    RoleDao roleDao。
 
    @Resource 
    StaffDao staffDao。
 
    @Resource 
    プライベートPasswordHelper passwordHelper。
    @Resource(名前= "roleBizImpl")
    プライベートRoleBiz roleBiz。
 
    @Override 
    公共の一覧は<UserVo> findAllの()、にInvocationTargetExceptionがスローされます 
        一覧<UserVo> userVoList =新しいArrayListを<>(); 
        一覧USERLIST = userDao.findAll();
 
 
        イテレータイテレータ= userList.iterator()。
 
        (iterator.hasNext()){一方
            のStringBuilder S =新規のStringBuilder(); 
            ユーザのユーザ=(ユーザー)iterator.next(); 
            一覧<ロング> roleIds = user.getRoleIds(); 
 
            UserVo userVo =新しいUserVo(); 
            BeanUtils.copyProperties(userVo、ユーザ)
 
            (!roleIds = null)の場合は{ 
                I = 0をint型。
                INTサイズ= roleIds.size()。
                用(; iは、サイズ< - 1; iは++){ 
                    役割役割= roleDao.findOne(roleIds.get(I))。
 
                    s.append(role.getDescription())。
                    s.append( ""); 
                }
                役割の役割= roleDao.findOne(roleIds.get(I)); 
                s.append(role.getDescription())。
                userVo.setRoleIdsStr(s.toString())。
            } 
 
 
            userVoList.add(userVo)。
 
        } 
 
        戻りuserVoList。
    } 
    ... 
} 
四、ロール控制层实现(部分)

@Service 
パブリッククラスRoleBizImplはRoleBiz {実装
 
    @Resource 
    プライベートRoleDao roleDaoと、
    @Resource(名前= "resourceBizImpl")
    プライベートResourceBiz resourceBiz。
    
    ... 
 
    @Override
        {(roleIdsロングroleId)のために 
    公共の設定<文字列> findRoles(ロング... roleIds){
        設定して<文字列>の役割=新しいHashSetの<文字列>(); 
    }
            役割の役割= findOne(roleId)。
            (もし!役割= NULL){ 
                roles.add(role.getRole()); 
            } 
        } 
        ロールを返します。
    } 
 
    @Override 
    公共セットの<string> findPermissions(ロング[] roleIds){ 
        セット<ロング> resourceIds =新しいHashSetの<ロング>(); 
        (ロングroleId:roleIds)用{ 
            役割役割= findOne(roleId)。
            (もし!役割= NULL){ 
                resourceIds.addAll(role.getResourceIds()); 
            } 
        } 
        戻りresourceBiz.findPermissions(resourceIds)。
} 
五、教材订购コントローラ

@Controller 
@RequestMapping( "orderbook.do")
 
パブリッククラスOrderBookController { 
    @Resource(名= "orderBookBizImpl")
    プライベートOrderBookBiz orderBookBiz。
 
    @RequiresRoles(値= { "管理者"、 "教師"}、論理= Logical.OR)
    @RequestMapping( "orderbook.view")
    パブリック文字列orderBookView(モデルm、HttpSessionのHttpSessionの){ 
        文字列staffId =(文字列)httpSession.getAttribute ( "ユーザ名"); 
 
        一覧<節> sectionList = orderBookBiz.findSelectedSection(staffId、TermContainer.now()); 
        INT courseCount = sectionList.size()。
        m.addAttribute( "selectedSectionList"、sectionList)。
        リターン「/教師/オーダー・ブック」。
 
    @RequiresRoles(値= { "管理者"、 "教師"}、論理= Logical.OR)
    @RequestMapping( "orderbook_review.view")
    パブリック文字列orderBookReviewView(モデルm、HttpSessionのセッション){ 
        
        にsession.setAttribute( "notReviewedBookList"、orderBookBiz .findAllNotReviewedBook())。
        リターン"/教師/ orderbook_review"; 
    } 
 
    @RequiresRoles(値= { "管理者"、 "教師"}、論理= Logical.OR)
    @RequestMapping( "orderbook_add.view")
    パブリック文字列orderBookAddView(モデルm){ 
        リターン"/教師/ orderbook_add"。
    } 
  
    @RequiresRoles(値= { "admin"を、
    @RequestMapping( "orderbook_added.view" 
        文字列staffId =(文字列)session.getAttribute( "ユーザ名")。
        m.addAttribute( "addedBookInfoList"、orderBookBiz.findAddedBookInfoList(staffId)); 
        リターン"/教師/ orderbook_added"; 
    } 
 
    @RequiresRoles(値= { "管理者"、 "教師"}、論理= Logical.OR)
    @RequestMapping( "追加")
    パブリック文字列(HttpServletRequestのリクエスト、HttpSessionのセッション){追加
        地図の地図= request.getParameterMapを(); 
        OrderBookVo orderBookVo =新しいOrderBookVo(); 
        orderBookVo.setStaffId((String)をsession.getAttribute( "ユーザ名")); 
        orderBookVo.setMap(マップ)
        ;: "/orderbook.do/orderbook.viewをリダイレクトする"を返します 
 
    (論理値= { "管理者"、 "教師"}、= Logical.OR)が@RequiresRoles 
    @RequestMapping( "更新")
    @ResponseStatus(値= HttpStatus.OK)
    公共ボイド更新(@RequestBody ChangedItems changedItems、HttpSessionのセッション){ 
        orderBookBiz.update(changedItems、(文字列)session.getAttribute( "ユーザ名")); 
    } 
 
    @RequiresRoles(値= { "管理者"、 "教師"}、論理= Logical.OR)
    @RequestMapping( "監査")
    パブリック文字列監査(HttpSessionのセッション){ 
        リスト<OrderBookReviewVo> orderBookReviewVoList =(一覧<OrderBookReviewVo>)セッション.getAttribute(」
        ;: "/orderbook.do/orderbook_review.viewリダイレクト"返す 
    公共ボイド追加(OrderBookVo orderBookVo){
六、教材订购控制层实现

@Service 
パブリッククラスOrderBookBizImplはOrderBookBiz {実装
 
    @Resource 
    OrderBookDao orderBookDaoと、
 
    @Resource 
    SectionDao sectionDao。
 
    @Resource 
    BookDao bookDao。
 
    @Resource 
    TakesDao takesDao。
 
    公共int型ITEMNUM = 8; 
 
    @Override 
    公共一覧<節> findSelectedSection(文字列staffId、文字列の年){ 
        sectionDao.findSelectedSection(staffId、年)を返します。
    } 
 
    @Transactional 
    @Override 
        ストリングstaffId = orderBookVo.getStaffId()。
        地図フォーム= orderBookVo.getMap();
        。イテレータイテレータ= forms.entrySet()反復子(); 
 
        (iterator.hasNext()){一方
            のMap.Entry <文字列、文字列[]>フォーム=(のMap.Entry <文字列、文字列[]>)iterator.next(); 
            文字列[]アイテム= form.getValue()。
 
            INTはbookcount =(items.length - 1)/ ITEMNUM。
            int型J = 1; 
            INT secId = Short.valueOf(項目[0])。
            {ための式(I ++; iは<私はbookcount = 0 INT))(
 
                文字列bookTitleでは=商品[J ++]トリム。
                文字列ISBN =項目[J ++](トリミング)。
                ストリングdataOfPringting =商品[J ++](トリミング)。
                文字列の作者=項目[J ++](トリム)。
                文字列のプレス=項目[J ++](トリム)。
                文字列のカテゴリ=項目[J ++](トリム)。
                短い単価= 0。
                もし{(項目[J ++]等号( "")!)
                    単価= Short.valueOf(項目[J - 1])。
                } 
                文字列備考=項目[J ++](トリミング)。
 
                ブックブック=新しいブック(); 
                book.setBookTitle(bookTitleで)。
                book.setIsbn(ISBN)。
                book.setDateOfPrinting(dataOfPringting)。
                book.setAuthor(著者); 
                book.setPress(プレス); 
                book.setCategory(カテゴリ); 
                book.setUnitPrice(単価)。
 
                オーダーブックオーダーブック=新しいオーダーブック(); 
                orderBook.setIsbn(ISBN)。
                orderBook.setBookTitle(bookTitleで)。
                orderBook.setStaffId(staffId)。
                orderBook.setRemark(備考)。
                orderBook.setSecId(secId)。
                orderBook.setApproval(偽); 
 
                orderBookDao.add(オーダ・ブック)。
                (bookDao.find(bookTitleで、ISBN)== null)の場合は
                    bookDao.add(書籍); 
 
            } 
        } 
 
    } 
 
    @Override 
    公衆リスト<AddedBookVo> findAddedBookInfoList(文字列staffId){ 
        orderBookDao.findAddedBookInfoList(staffId)を返します。
    } 
 
    @Transactional
    @Override 
    公共ボイド更新(ChangedItemsのchangedItems、ストリングstaffId){
        偽usedByOtherSec =ブール。
        INT secId = changedItems.getSecID()。
        一覧<ChangedItems.AlterItem> alterItemList = changedItems.getAlterItemList(); 
 
 
        文字列bookTitleで、
        文字列ISBN; 
        イテレータイテレータ= alterItemList.iterator()。
        一方、(iterator.hasNext()){ 
            ChangedItems.AlterItem alterItem =(ChangedItems.AlterItem)iterator.next(); 
 
            bookTitleで= alterItem.getBookTitle()。
            ISBN = alterItem.getIsbn()。
 
            IF(orderBookDao.usedByOtherSec(bookTitleで、ISBN、secId)== 1){ 
                usedByOtherSec = TRUE。
            }
 
            ストリングnewBookTitle = alterItem.getNewBookTitle()。
            ストリングnewIsbn = alterItem.getNewIsbn()。
            ストリングnewDateOfPrinting = alterItem.getNewDateOfPrinting()。
            ストリングnewAuthor = alterItem.getNewAuthor()。
            ストリングnewPress = alterItem.getNewPress()。
            ストリングnewCategory = alterItem.getNewCategory()。
            文字列TEMP = alterItem.getNewUnitPrice()。
            ストリングnewRemark = alterItem.getNewRemark()。
            短いnewUnitPrice = 0。
 
            (もし!temp.equals( "")){ 
                newUnitPrice = Short.valueOf(温度)。
            }  
            ブックブック=新しいブック();
            book.setBookTitle(newBookTitle)。
            book.setIsbn(newIsbn)。
            book.setDateOfPrinting(newDateOfPrinting)。
            book.setAuthor(newAuthor)。
            book.setPress(newPress)。
            book.setCategory(newCategory)。
            book.setUnitPrice(newUnitPrice)。
            (!usedByOtherSec)であれば
                bookDao.delete(bookTitleで、ISBN)。
            //判断图书存在
            (bookDao.find(newBookTitle、newIsbn)== null)の場合は
                bookDao.add(書籍); 
            orderBookDao.delete(secId、bookTitleで、ISBN)。
            オーダーブックオーダーブック=新しいオーダーブック(); 
            orderBook.setIsbn(newIsbn)。
            orderBook.setSecId(secId)。
            orderBook.setStaffId(staffId)。
            orderBook.setBookTitle(newBookTitle)。
            orderBook.setRemark(newRemark)。
            orderBookDao.add(オーダ・ブック)。
 
        } 
        リスト<ChangedItems.DeleteItem> deleteItemList = changedItems.getDeleteItemList()。
        反復子= deleteItemList.iterator()。
        一方、(iterator.hasNext()){ 
            ChangedItems.DeleteItem deleteItem =(ChangedItems.DeleteItem)iterator.next(); 
            ISBN = deleteItem.getIsbn()。
            bookTitleで= deleteItem.getBookTitle()。
 
            orderBookDao.delete(secId、bookTitleで、ISBN)。
            (もし!usedByOtherSec)
                bookDao.delete(bookTitleで、ISBN)。
        } 
 
    } 
 
    @Override 
    公共ボイド監査(一覧<OrderBookReviewVo> orderBookReviewVoList){ 
        イテレータイテレータ= orderBookReviewVoList.iterator()。
        (iterator.hasNext()){一方
            OrderBookReviewVo orderBookReviewVo =(OrderBookReviewVo)iterator.next(); 
            INT secId = orderBookReviewVo.getSecId()。
            ストリングbookTitleで= orderBookReviewVo.getBookTitle()。
            文字列ISBN = orderBookReviewVo.getIsbn()。
            orderBookDao.audit(secId、bookTitleで、ISBN)。
        } 
    } 
 
    @Override 
    公衆リスト<OrderBookReviewVo> findAllNotReviewedBook(){ 
        一覧<OrderBookReviewVo> orderBookReviewVoList = orderBookDao.findAllNotReviewedBook()。
        イテレータイテレータ= orderBookReviewVoList.iterator()。
        一方、(iterator.hasNext()){ 
            OrderBookReviewVoのTEMP =(OrderBookReviewVo)iterator.next(); 
            INT secId = temp.getSecId()。
            INT stdCount = takesDao.getStdCountInSection(secId)。
            temp.setStdCount(stdCount)。
        } 
 
        戻りorderBookReviewVoList。
    } 
 
}

  

おすすめ

転載: www.cnblogs.com/oner-xd/p/10942714.html