diff --git a/ROOT/WEB-INF/page/front/include/footer.jsp b/ROOT/WEB-INF/page/front/include/footer.jsp new file mode 100644 index 0000000..3073cbb --- /dev/null +++ b/ROOT/WEB-INF/page/front/include/footer.jsp @@ -0,0 +1,8 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + diff --git a/ROOT/WEB-INF/page/front/include/header.jsp b/ROOT/WEB-INF/page/front/include/header.jsp new file mode 100644 index 0000000..1c32674 --- /dev/null +++ b/ROOT/WEB-INF/page/front/include/header.jsp @@ -0,0 +1,49 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +HCI Meeting-Home + + + + + + +
+
+
+ +
+
+
+
+ +
+ hci +
+ + +
+
\ No newline at end of file diff --git a/ROOT/WEB-INF/page/front/index.jsp b/ROOT/WEB-INF/page/front/index.jsp new file mode 100644 index 0000000..ed9fa51 --- /dev/null +++ b/ROOT/WEB-INF/page/front/index.jsp @@ -0,0 +1,43 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + +
+
+ +
+
+ +
+ + +
+ + \ No newline at end of file diff --git a/ROOT/colorbox.css b/ROOT/colorbox.css new file mode 100644 index 0000000..7918e42 --- /dev/null +++ b/ROOT/colorbox.css @@ -0,0 +1,85 @@ +/* + ColorBox Core Style: + The following CSS is consistent between example themes and should not be altered. +*/ +#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} +#cboxOverlay{position:fixed; width:100%; height:100%;} +#cboxMiddleLeft, #cboxBottomLeft{clear:left;} +#cboxContent{position:relative;} +#cboxLoadedContent{overflow:auto;} +#cboxTitle{margin:0;} +#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;} +#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} +.cboxPhoto{float:left; margin:auto; border:0; display:block;} +.cboxIframe{width:100%; height:100%; display:block; border:0;} + +/* + User Style: + Change the following styles to modify the appearance of ColorBox. They are + ordered & tabbed in a way that represents the nesting of the generated HTML. +*/ +#cboxOverlay{background:url(images/overlay.png) repeat 0 0;} +#colorbox{} + #cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px 0;} + #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px 0;} + #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px -29px;} + #cboxBottomRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px -29px;} + #cboxMiddleLeft{width:21px; background:url(images/controls.png) left top repeat-y;} + #cboxMiddleRight{width:21px; background:url(images/controls.png) right top repeat-y;} + #cboxTopCenter{height:21px; background:url(images/border.png) 0 0 repeat-x;} + #cboxBottomCenter{height:21px; background:url(images/border.png) 0 -29px repeat-x;} + #cboxContent{background:#fff; overflow:hidden;} + .cboxIframe{background:#fff;} + #cboxError{padding:50px; border:1px solid #ccc;} + #cboxLoadedContent{margin-bottom:28px;} + #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;} + #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} + #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} + #cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxPrevious:hover{background-position:-75px -25px;} + #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxNext:hover{background-position:-50px -25px;} + #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;} + #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;} + #cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxClose:hover{background-position:-25px -25px;} + +/* + The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill + when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9. + See: http://jacklmoore.com/notes/ie-transparency-problems/ +*/ +.cboxIE #cboxTopLeft, +.cboxIE #cboxTopCenter, +.cboxIE #cboxTopRight, +.cboxIE #cboxBottomLeft, +.cboxIE #cboxBottomCenter, +.cboxIE #cboxBottomRight, +.cboxIE #cboxMiddleLeft, +.cboxIE #cboxMiddleRight { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); +} + +/* + The following provides PNG transparency support for IE6 + Feel free to remove this and the /ie6/ directory if you have dropped IE6 support. +*/ +.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);} +.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);} +.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);} +.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);} +.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);} +.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);} +.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);} +.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);} + +.cboxIE6 #cboxTopLeft, +.cboxIE6 #cboxTopCenter, +.cboxIE6 #cboxTopRight, +.cboxIE6 #cboxBottomLeft, +.cboxIE6 #cboxBottomCenter, +.cboxIE6 #cboxBottomRight, +.cboxIE6 #cboxMiddleLeft, +.cboxIE6 #cboxMiddleRight { + _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')"); +} diff --git a/ROOT/finished_projects.html b/ROOT/finished_projects.html new file mode 100644 index 0000000..762364f --- /dev/null +++ b/ROOT/finished_projects.html @@ -0,0 +1,96 @@ + + + + +hci meeting + + + + + +
+
+ +
+
+
+
+ +
+ + +
+
+
+ +
+

已完成项目

+ + + + + + + + +
>个人中心>已完成项目
+
+
+
+ +
+

项目名字:XX

+

项目成员:XX

+

项目简介:XXXXXXXX

+
+
+
+
+ +
+

项目名字:XX

+

项目成员:XX

+

项目简介:XXXXXXXX

+
+
+
+
+
+
+
+ +
+ + + diff --git a/ROOT/images/HCI-SCAU.png b/ROOT/images/HCI-SCAU.png new file mode 100644 index 0000000..b340f13 Binary files /dev/null and b/ROOT/images/HCI-SCAU.png differ diff --git a/ROOT/images/avicon.png b/ROOT/images/avicon.png new file mode 100644 index 0000000..df6eb4e Binary files /dev/null and b/ROOT/images/avicon.png differ diff --git a/ROOT/images/blackbar.png b/ROOT/images/blackbar.png new file mode 100644 index 0000000..ad28b63 Binary files /dev/null and b/ROOT/images/blackbar.png differ diff --git a/ROOT/images/blackblock.png b/ROOT/images/blackblock.png new file mode 100644 index 0000000..5c3fa23 Binary files /dev/null and b/ROOT/images/blackblock.png differ diff --git a/ROOT/images/book1.jpg b/ROOT/images/book1.jpg new file mode 100644 index 0000000..1ecd02b Binary files /dev/null and b/ROOT/images/book1.jpg differ diff --git a/ROOT/images/book2.jpg b/ROOT/images/book2.jpg new file mode 100644 index 0000000..88f9e80 Binary files /dev/null and b/ROOT/images/book2.jpg differ diff --git a/ROOT/images/border.png b/ROOT/images/border.png new file mode 100644 index 0000000..f463a10 Binary files /dev/null and b/ROOT/images/border.png differ diff --git a/ROOT/images/center_navbackground.gif b/ROOT/images/center_navbackground.gif new file mode 100644 index 0000000..d155336 Binary files /dev/null and b/ROOT/images/center_navbackground.gif differ diff --git a/ROOT/images/controls.png b/ROOT/images/controls.png new file mode 100644 index 0000000..dcfd6fb Binary files /dev/null and b/ROOT/images/controls.png differ diff --git a/ROOT/images/flower.png b/ROOT/images/flower.png new file mode 100644 index 0000000..08e3df2 Binary files /dev/null and b/ROOT/images/flower.png differ diff --git a/ROOT/images/foot_navbackground.gif b/ROOT/images/foot_navbackground.gif new file mode 100644 index 0000000..66b6f2a Binary files /dev/null and b/ROOT/images/foot_navbackground.gif differ diff --git a/ROOT/images/greenbar.png b/ROOT/images/greenbar.png new file mode 100644 index 0000000..b12b73d Binary files /dev/null and b/ROOT/images/greenbar.png differ diff --git a/ROOT/images/head_background.gif b/ROOT/images/head_background.gif new file mode 100644 index 0000000..f517d49 Binary files /dev/null and b/ROOT/images/head_background.gif differ diff --git a/ROOT/images/home.png b/ROOT/images/home.png new file mode 100644 index 0000000..d4a5e22 Binary files /dev/null and b/ROOT/images/home.png differ diff --git a/ROOT/images/ie6/borderBottomCenter.png b/ROOT/images/ie6/borderBottomCenter.png new file mode 100644 index 0000000..0d4475e Binary files /dev/null and b/ROOT/images/ie6/borderBottomCenter.png differ diff --git a/ROOT/images/ie6/borderBottomLeft.png b/ROOT/images/ie6/borderBottomLeft.png new file mode 100644 index 0000000..2775eba Binary files /dev/null and b/ROOT/images/ie6/borderBottomLeft.png differ diff --git a/ROOT/images/ie6/borderBottomRight.png b/ROOT/images/ie6/borderBottomRight.png new file mode 100644 index 0000000..f7f5137 Binary files /dev/null and b/ROOT/images/ie6/borderBottomRight.png differ diff --git a/ROOT/images/ie6/borderMiddleLeft.png b/ROOT/images/ie6/borderMiddleLeft.png new file mode 100644 index 0000000..a2d63d1 Binary files /dev/null and b/ROOT/images/ie6/borderMiddleLeft.png differ diff --git a/ROOT/images/ie6/borderMiddleRight.png b/ROOT/images/ie6/borderMiddleRight.png new file mode 100644 index 0000000..fd7c3e8 Binary files /dev/null and b/ROOT/images/ie6/borderMiddleRight.png differ diff --git a/ROOT/images/ie6/borderTopCenter.png b/ROOT/images/ie6/borderTopCenter.png new file mode 100644 index 0000000..2937a9c Binary files /dev/null and b/ROOT/images/ie6/borderTopCenter.png differ diff --git a/ROOT/images/ie6/borderTopLeft.png b/ROOT/images/ie6/borderTopLeft.png new file mode 100644 index 0000000..f9d458b Binary files /dev/null and b/ROOT/images/ie6/borderTopLeft.png differ diff --git a/ROOT/images/ie6/borderTopRight.png b/ROOT/images/ie6/borderTopRight.png new file mode 100644 index 0000000..74b8583 Binary files /dev/null and b/ROOT/images/ie6/borderTopRight.png differ diff --git a/ROOT/images/index.css b/ROOT/images/index.css new file mode 100644 index 0000000..3514678 --- /dev/null +++ b/ROOT/images/index.css @@ -0,0 +1,431 @@ +*{ + margin:0; + padding:0; + text-align:center; + font-family:"宋体", "Arial Unicode MS", sans-serif; +} + /*the index part*/ +body{ + + margin:0px 0px 0px 0px; + padding:0px; + text-align:center; +} +/*#background{ + position:relative; + margin:0px auto 0px auto; + width:1200px; +}*/ +#container{ + position:relative; + width:100%; + min-width:1000px; + margin:0px auto 0px auto; + padding:0px; + background-color:#dbddc1; + text-align:center; + +} +#top1{ + width:100%; + height:40px; + background:#729c00; + position:fixed; + top:0; + left:0; + z-index:100; +} +#topsearch{ + height:40px; + background:#729c00; + width:900px; + position:relative; + margin:0px auto 0px auto; +} +#top2{ + width:100%; + background-image:url(blackbar.png); + height:100px; + margin-top:22px; +} + +#topcontent{ + height:100px; + background-image:url(blackbar.png); + width:900px; + position:relative; + margin:0px auto 0px auto; +} +#logo{ + width:80px; + height:70px; + float:left; + margin-top:25px; + +} +#title{ + float:left; +} +div.search{ + border:0px; + position:relative; + float:right; +} +div.search table td{ + padding-left:5px; +} + +#send{ + width:80px; + height:27px; + background:url(login.png); + border:0px; + cursor:pointer; +} +#navigation{ + width:370px; + height:28px; + margin-top:73px ; + float:right; +} +#navigation ul{ + padding:0; + margin:0 ; + list-style:none; +} +#navigation ul li { + font-size:16px; + font-family:"微软雅黑"; + color:#ffffff; + text-decoration:none; + position:relative; + float:left; + width:90px; + height:26px;/*控制导航条高度*/ + display:block; +} +#navigation ul li a{ + color:#c4bdbc; + text-decoration:none; + width:80px; + font-family:"微软雅黑"; + } +.thread:hover{ + border-right:#c4bdbc 1px solid; +} +.thread{ + border-right:#938a87 1px solid; +} +*#navigation ul li a:hover{ + color:#a1d602; +/* border-bottom:#729c00 2px solid; +*/ + } + #navigation ul li:hover{ + background:url(blackblock.png); +/* border-bottom:#a1d602 2px solid; */ + color:#edf501; + } +#mainshow{ + height:352px; + background:#ffffff; + text-align:center; + border-bottom:#729c00 2px solid; +} +#middle{ + margin:0px auto 0px auto; + width:1000px; + height:350px; + overflow:hidden; + clear:both; + } + +#index_article{ + width:960px; + height:350px; + text-align:left; + margin:0px auto 0px auto; + background:#FFFFFF; +} + +#index_article ul{ + padding:0; + margin:10px auto 0 60px; + list-style:none; + line-height:30px; + text-align:left; +} +#index_article ul li a{ + color:#333; + font-size:16px; + font-family:"宋体"; + font-weight:bold; + text-decoration:none; + padding:10px auto 0px 10px; +} +#index_article ul li a:hover{ + color:#060; + text-decoration:underline; +} +.news{ + text-align:left; + width:330px; + height:350px; + border-right:#dbddc1 1px solid; + float:left; +} +.news:hover{ +background:url(greenbar.png); +} +.share:hover{ +background:url(greenbar.png); +} +.news img{ + margin:20px auto 10px 50px; +} +.share{ + text-align:left; + width:627px; + height:350px; + float:left; +} +.share img{ + margin:20px auto 10px 50px; +} + + +/*the sub part*/ +#article{ + margin:0 auto 0 auto; + position:relative; + width:1024px; + width:960px; + padding-top:36px; +} +#left_nav{ + float:left; + width:256px; +} +#left_nav h3{ + margin:0; + padding:0; + padding-top:20px; + width:239px; + height:69px; + background:url("top_navbackground.gif") no-repeat; + font-family:"微软雅黑", "宋体", sans-serif; + font-size:19px; + color:#fff; +} +#left_nav ul{ + padding:0; + margin:0; + background:url(center_navbackground.gif) repeat-y; + width:239px; + list-style:none; + height:194px; +} + +#left_nav li a{ + display:block; + padding-left:45px; + padding-bottom:8px; + width:150px; + font-size:17px; + color:#949494; + text-decoration:none; + text-align:left; + +} +#left_nav li a:hover{ + color:#000; + background:url(flower.png) no-repeat 150px 2px; +} +#left_nav li img{ + padding-left:10px; + display:none; +} +#left_navfoot{ + width:239px; + height:30px; + background:url(foot_navbackground.gif) no-repeat; +} +#right_information{ + float:left; + width:748px; + width:684px; + padding-left:20px; + padding-top:5px; + padding-bottom:43px; +} +#right_information h3{ + width:137px; + height:31px; + background:url(site.png) no-repeat 1% 2%; + padding-top:0px; + float:left; + font-family:"黑体", "宋体", sans-serif; +} +#right_information table{ + float:right; + font-size:13px; + color:#5a5b5a; +} +#right_information table img{ + border:0; +} +#right_information table td{ + padding-left:9px; + padding-right:9px; +} +#right_information table td a{ + color:#5a5b5a; + text-decoration:none; +} +#right_information table td a:hover{ + text-decoration:underline; +} +#personal_information , #modify_information,#modify_password,#finished_projects,#unfinished_projects,#personal_list{ + clear:both; + padding-top:30px; + overflow:hidden; +} +#personal_information img,#detail_information img{ + float:left; + width:137px; + height:157px; + background:#000; +} +#personal_information div.center,#detail_information div.center{ + float:left; + padding-left:28px; +} +#personal_information div.message,#modify_information div.message,#modify_password div.message,#detail_information div.message{ + padding-bottom:10px; +} +#personal_information div.message h2,#modify_information div.message h2,#modify_password div.message h2,#detail_information div.message h2{ + border-bottom:#84b600 solid 2px; + text-align:left; + width:540px; + margin-bottom:5px; +} +#personal_information div.message h2,#detail_information div.message h2{ + width:519px; +} +#modify_information div.message table,#modify_password div.message table,#personal_information div.message table,#detail_information div.message table{ + font-size:16px; + float:none; + color:#000; +} +#modify_information div.message table td,#modify_password div.message table td,#personal_information div.message table td,#detail_information div.message table td{ + padding:2px 0; + text-align:left; +} +#modify_information div.message table i{ + color:red; + font-style:normal; +} +#modify_information div.center,#modify_password div.center,#finished_projects div.center,#unfinished_projects div.center,#personal_list div.center{ + text-align:left; + float:left; + padding-bottom:20px; +} +#modify_information div.message table td input,#modify_password div.message table td input{ + text-align:left; + font-size:16px; +} +#modify_information .button,#modify_password .button{ + background:url(save.png) repeat-x; + width:51.51px; + height:28px; + border:0px; + cursor:pointer; + color:#f5f97f; + font-size:14px; + -moz-border-radius:3px; + -webkit-border-radius:3px; +} +#finished_projects div.project,#unfinished_projects div.project{ + width:616px; + border:#99c944 solid 2px; + border-radius:4px; + -moz-border-radius:4px; + -webkit-border-radius:4px; + -moz-box-shadow:2px 3px 4px #b4bea3; + -webkit-box-shadow:2px 3px 4px #b4bea3; + padding:25px; + margin-bottom:20px; + background:#fff; +} +#finished_projects div.project img,#unfinished_projects div.project img{ + width:119px; + height:142px; + float:left; + background:#993; +} +#finished_projects div.project div.list,#unfinished_projects div.project div.list{ + padding-left:20px; + float:left; + text-align:left; +} +#finished_projects div.project div p,#unfinished_projects div.project div p{ + padding-bottom:20px; + text-align:left; +} +#unfinished_projects div.project .button{ + background:url(week.png); + width:87.5px; + height:33.5px; + -moz-border-radius:3px; + -webkit-border-radius:3px; + border:solid #608c03 1px; + cursor:pointer; +} +#personal_list div.center{ + padding-left:16px; + padding-right:16px; + padding-bottom:0px; +} +#personal_list div.center div.person{ + width:171px; + margin-left:21px; + margin-right:21px; + margin-bottom:20px; + float:left; + border:#99c944 solid 2px; + border-radius:4px; + -moz-border-radius:4px; + -webkit-border-radius:4px; + -moz-box-shadow:2px 3px 4px #b4bea3; + -webkit-box-shadow:2px 3px 4px #b4bea3; + text-align:center; + padding:14px 0; +} +#personal_list div.center div.person img{ + width:120px; + height:140px; + background:#FCF; +} +#finished_projects div.project .clear,#unfinished_projects div.project .clear,#personal_list div.clear{ + clear:both; +} +#detail_information{ + width:684px; + height:376px; + border:#99c944 solid 2px; + border-radius:4px; + padding:5px 5px 0px 5px; + +} +#foot{ + clear:both; + height:50px; + background:#729c00; + margin:0px auto 0px auto; +} +#foot p{ + font-size:16px; + font-family:"宋体"; + color:#000; + margin:0px auto auto auto; +} \ No newline at end of file diff --git a/ROOT/images/loading.gif b/ROOT/images/loading.gif new file mode 100644 index 0000000..b4695d8 Binary files /dev/null and b/ROOT/images/loading.gif differ diff --git a/ROOT/images/loading_background.png b/ROOT/images/loading_background.png new file mode 100644 index 0000000..6ae83e6 Binary files /dev/null and b/ROOT/images/loading_background.png differ diff --git a/ROOT/images/login.png b/ROOT/images/login.png new file mode 100644 index 0000000..723a307 Binary files /dev/null and b/ROOT/images/login.png differ diff --git a/ROOT/images/logo.png b/ROOT/images/logo.png new file mode 100644 index 0000000..c780e77 Binary files /dev/null and b/ROOT/images/logo.png differ diff --git a/ROOT/images/overlay.png b/ROOT/images/overlay.png new file mode 100644 index 0000000..53ea98f Binary files /dev/null and b/ROOT/images/overlay.png differ diff --git a/ROOT/images/pic.png b/ROOT/images/pic.png new file mode 100644 index 0000000..6e96ecb Binary files /dev/null and b/ROOT/images/pic.png differ diff --git a/ROOT/images/save.png b/ROOT/images/save.png new file mode 100644 index 0000000..c10fbc5 Binary files /dev/null and b/ROOT/images/save.png differ diff --git a/ROOT/images/show.png b/ROOT/images/show.png new file mode 100644 index 0000000..85a2bb2 Binary files /dev/null and b/ROOT/images/show.png differ diff --git a/ROOT/images/site.png b/ROOT/images/site.png new file mode 100644 index 0000000..5b0d4a8 Binary files /dev/null and b/ROOT/images/site.png differ diff --git a/ROOT/images/top_background.gif b/ROOT/images/top_background.gif new file mode 100644 index 0000000..ea4f555 Binary files /dev/null and b/ROOT/images/top_background.gif differ diff --git a/ROOT/images/top_navbackground.gif b/ROOT/images/top_navbackground.gif new file mode 100644 index 0000000..50dde64 Binary files /dev/null and b/ROOT/images/top_navbackground.gif differ diff --git a/ROOT/images/water1.jpg b/ROOT/images/water1.jpg new file mode 100644 index 0000000..b7aaf47 Binary files /dev/null and b/ROOT/images/water1.jpg differ diff --git a/ROOT/images/water2.jpg b/ROOT/images/water2.jpg new file mode 100644 index 0000000..d0e1725 Binary files /dev/null and b/ROOT/images/water2.jpg differ diff --git a/ROOT/images/week.png b/ROOT/images/week.png new file mode 100644 index 0000000..d16cf08 Binary files /dev/null and b/ROOT/images/week.png differ diff --git a/ROOT/index.html b/ROOT/index.html new file mode 100644 index 0000000..a35ff10 --- /dev/null +++ b/ROOT/index.html @@ -0,0 +1,12 @@ + + + + +HCI Meeting-Home + + + + + diff --git a/ROOT/index.jsp b/ROOT/index.jsp deleted file mode 100644 index c9c1792..0000000 --- a/ROOT/index.jsp +++ /dev/null @@ -1,12 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> - - - - -Insert title here - - -

Hello World!!!

- - \ No newline at end of file diff --git a/ROOT/js/changePic.js b/ROOT/js/changePic.js new file mode 100644 index 0000000..1ee897f --- /dev/null +++ b/ROOT/js/changePic.js @@ -0,0 +1,49 @@ +// JavaScript Document +window.onload=function(){ + var ele=document.getElementById("middle"); + var w=ele.clientWidth;/*获得客户区域(浏览器窗口,不包括菜单栏和状态栏,就是内容窗口)的宽度*/ + var n=20,t=20; + var timers=new Array(n); + var c=document.getElementById("navigation").getElementsByTagName("li"); + for(var i=0;i)[^>]*$|^#([\w-]+)$/, + // Is it a simple selector + isSimple = /^.[^:#\[\.,]*$/; + +jQuery.fn = jQuery.prototype = { + init: function( selector, context ) { + // Make sure that a selection was provided + selector = selector || document; + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this[0] = selector; + this.length = 1; + this.context = selector; + return this; + } + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + var match = quickExpr.exec( selector ); + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) + selector = jQuery.clean( [ match[1] ], context ); + + // HANDLE: $("#id") + else { + var elem = document.getElementById( match[3] ); + + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem && elem.id != match[3] ) + return jQuery().find( selector ); + + // Otherwise, we inject the element directly into the jQuery object + var ret = jQuery( elem || [] ); + ret.context = document; + ret.selector = selector; + return ret; + } + + // HANDLE: $(expr, [context]) + // (which is just equivalent to: $(content).find(expr) + } else + return jQuery( context ).find( selector ); + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) + return jQuery( document ).ready( selector ); + + // Make sure that old selector state is passed along + if ( selector.selector && selector.context ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return this.setArray(jQuery.isArray( selector ) ? + selector : + jQuery.makeArray(selector)); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.3.2", + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num === undefined ? + + // Return a 'clean' array + Array.prototype.slice.call( this ) : + + // Return just the object + this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = jQuery( elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) + ret.selector = this.selector + (this.selector ? " " : "") + selector; + else if ( name ) + ret.selector = this.selector + "." + name + "(" + selector + ")"; + + // Return the newly-formed element set + return ret; + }, + + // Force the current matched set of elements to become + // the specified array of elements (destroying the stack in the process) + // You should use pushStack() in order to do this, but maintain the stack + setArray: function( elems ) { + // Resetting the length to 0, then using the native Array push + // is a super-fast way to populate an object with array-like properties + this.length = 0; + Array.prototype.push.apply( this, elems ); + + return this; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem && elem.jquery ? elem[0] : elem + , this ); + }, + + attr: function( name, value, type ) { + var options = name; + + // Look for the case where we're accessing a style value + if ( typeof name === "string" ) + if ( value === undefined ) + return this[0] && jQuery[ type || "attr" ]( this[0], name ); + + else { + options = {}; + options[ name ] = value; + } + + // Check to see if we're setting style values + return this.each(function(i){ + // Set all the styles + for ( name in options ) + jQuery.attr( + type ? + this.style : + this, + name, jQuery.prop( this, options[ name ], type, i, name ) + ); + }); + }, + + css: function( key, value ) { + // ignore negative width and height values + if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) + value = undefined; + return this.attr( key, value, "curCSS" ); + }, + + text: function( text ) { + if ( typeof text !== "object" && text != null ) + return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + + var ret = ""; + + jQuery.each( text || this, function(){ + jQuery.each( this.childNodes, function(){ + if ( this.nodeType != 8 ) + ret += this.nodeType != 1 ? + this.nodeValue : + jQuery.fn.text( [ this ] ); + }); + }); + + return ret; + }, + + wrapAll: function( html ) { + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).clone(); + + if ( this[0].parentNode ) + wrap.insertBefore( this[0] ); + + wrap.map(function(){ + var elem = this; + + while ( elem.firstChild ) + elem = elem.firstChild; + + return elem; + }).append(this); + } + + return this; + }, + + wrapInner: function( html ) { + return this.each(function(){ + jQuery( this ).contents().wrapAll( html ); + }); + }, + + wrap: function( html ) { + return this.each(function(){ + jQuery( this ).wrapAll( html ); + }); + }, + + append: function() { + return this.domManip(arguments, true, function(elem){ + if (this.nodeType == 1) + this.appendChild( elem ); + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function(elem){ + if (this.nodeType == 1) + this.insertBefore( elem, this.firstChild ); + }); + }, + + before: function() { + return this.domManip(arguments, false, function(elem){ + this.parentNode.insertBefore( elem, this ); + }); + }, + + after: function() { + return this.domManip(arguments, false, function(elem){ + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + }, + + end: function() { + return this.prevObject || jQuery( [] ); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: [].push, + sort: [].sort, + splice: [].splice, + + find: function( selector ) { + if ( this.length === 1 ) { + var ret = this.pushStack( [], "find", selector ); + ret.length = 0; + jQuery.find( selector, this[0], ret ); + return ret; + } else { + return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){ + return jQuery.find( selector, elem ); + })), "find", selector ); + } + }, + + clone: function( events ) { + // Do the clone + var ret = this.map(function(){ + if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) { + // IE copies events bound via attachEvent when + // using cloneNode. Calling detachEvent on the + // clone will also remove the events from the orignal + // In order to get around this, we use innerHTML. + // Unfortunately, this means some modifications to + // attributes in IE that are actually only stored + // as properties will not be copied (such as the + // the name attribute on an input). + var html = this.outerHTML; + if ( !html ) { + var div = this.ownerDocument.createElement("div"); + div.appendChild( this.cloneNode(true) ); + html = div.innerHTML; + } + + return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0]; + } else + return this.cloneNode(true); + }); + + // Copy the events from the original to the clone + if ( events === true ) { + var orig = this.find("*").andSelf(), i = 0; + + ret.find("*").andSelf().each(function(){ + if ( this.nodeName !== orig[i].nodeName ) + return; + + var events = jQuery.data( orig[i], "events" ); + + for ( var type in events ) { + for ( var handler in events[ type ] ) { + jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data ); + } + } + + i++; + }); + } + + // Return the cloned set + return ret; + }, + + filter: function( selector ) { + return this.pushStack( + jQuery.isFunction( selector ) && + jQuery.grep(this, function(elem, i){ + return selector.call( elem, i ); + }) || + + jQuery.multiFilter( selector, jQuery.grep(this, function(elem){ + return elem.nodeType === 1; + }) ), "filter", selector ); + }, + + closest: function( selector ) { + var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null, + closer = 0; + + return this.map(function(){ + var cur = this; + while ( cur && cur.ownerDocument ) { + if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) { + jQuery.data(cur, "closest", closer); + return cur; + } + cur = cur.parentNode; + closer++; + } + }); + }, + + not: function( selector ) { + if ( typeof selector === "string" ) + // test special case where just one selector is passed in + if ( isSimple.test( selector ) ) + return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector ); + else + selector = jQuery.multiFilter( selector, this ); + + var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; + return this.filter(function() { + return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; + }); + }, + + add: function( selector ) { + return this.pushStack( jQuery.unique( jQuery.merge( + this.get(), + typeof selector === "string" ? + jQuery( selector ) : + jQuery.makeArray( selector ) + ))); + }, + + is: function( selector ) { + return !!selector && jQuery.multiFilter( selector, this ).length > 0; + }, + + hasClass: function( selector ) { + return !!selector && this.is( "." + selector ); + }, + + val: function( value ) { + if ( value === undefined ) { + var elem = this[0]; + + if ( elem ) { + if( jQuery.nodeName( elem, 'option' ) ) + return (elem.attributes.value || {}).specified ? elem.value : elem.text; + + // We need to handle select boxes special + if ( jQuery.nodeName( elem, "select" ) ) { + var index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type == "select-one"; + + // Nothing was selected + if ( index < 0 ) + return null; + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + if ( option.selected ) { + // Get the specifc value for the option + value = jQuery(option).val(); + + // We don't need an array for one selects + if ( one ) + return value; + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + } + + // Everything else, we just grab the value + return (elem.value || "").replace(/\r/g, ""); + + } + + return undefined; + } + + if ( typeof value === "number" ) + value += ''; + + return this.each(function(){ + if ( this.nodeType != 1 ) + return; + + if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) ) + this.checked = (jQuery.inArray(this.value, value) >= 0 || + jQuery.inArray(this.name, value) >= 0); + + else if ( jQuery.nodeName( this, "select" ) ) { + var values = jQuery.makeArray(value); + + jQuery( "option", this ).each(function(){ + this.selected = (jQuery.inArray( this.value, values ) >= 0 || + jQuery.inArray( this.text, values ) >= 0); + }); + + if ( !values.length ) + this.selectedIndex = -1; + + } else + this.value = value; + }); + }, + + html: function( value ) { + return value === undefined ? + (this[0] ? + this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") : + null) : + this.empty().append( value ); + }, + + replaceWith: function( value ) { + return this.after( value ).remove(); + }, + + eq: function( i ) { + return this.slice( i, +i + 1 ); + }, + + slice: function() { + return this.pushStack( Array.prototype.slice.apply( this, arguments ), + "slice", Array.prototype.slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function(elem, i){ + return callback.call( elem, i, elem ); + })); + }, + + andSelf: function() { + return this.add( this.prevObject ); + }, + + domManip: function( args, table, callback ) { + if ( this[0] ) { + var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(), + scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ), + first = fragment.firstChild; + + if ( first ) + for ( var i = 0, l = this.length; i < l; i++ ) + callback.call( root(this[i], first), this.length > 1 || i > 0 ? + fragment.cloneNode(true) : fragment ); + + if ( scripts ) + jQuery.each( scripts, evalScript ); + } + + return this; + + function root( elem, cur ) { + return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ? + (elem.getElementsByTagName("tbody")[0] || + elem.appendChild(elem.ownerDocument.createElement("tbody"))) : + elem; + } + } +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +function evalScript( i, elem ) { + if ( elem.src ) + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + + else + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + + if ( elem.parentNode ) + elem.parentNode.removeChild( elem ); +} + +function now(){ + return +new Date; +} + +jQuery.extend = jQuery.fn.extend = function() { + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) + target = {}; + + // extend jQuery itself if only one argument is passed + if ( length == i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) + // Extend the base object + for ( var name in options ) { + var src = target[ name ], copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) + continue; + + // Recurse if we're merging object values + if ( deep && copy && typeof copy === "object" && !copy.nodeType ) + target[ name ] = jQuery.extend( deep, + // Never move original objects, clone them + src || ( copy.length != null ? [ ] : { } ) + , copy ); + + // Don't bring in undefined values + else if ( copy !== undefined ) + target[ name ] = copy; + + } + + // Return the modified object + return target; +}; + +// exclude the following css properties to add px +var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, + // cache defaultView + defaultView = document.defaultView || {}, + toString = Object.prototype.toString; + +jQuery.extend({ + noConflict: function( deep ) { + window.$ = _$; + + if ( deep ) + window.jQuery = _jQuery; + + return jQuery; + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return toString.call(obj) === "[object Function]"; + }, + + isArray: function( obj ) { + return toString.call(obj) === "[object Array]"; + }, + + // check if an element is in a (or is an) XML document + isXMLDoc: function( elem ) { + return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || + !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument ); + }, + + // Evalulates a script in a global context + globalEval: function( data ) { + if ( data && /\S/.test(data) ) { + // Inspired by code by Andrea Giammarchi + // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html + var head = document.getElementsByTagName("head")[0] || document.documentElement, + script = document.createElement("script"); + + script.type = "text/javascript"; + if ( jQuery.support.scriptEval ) + script.appendChild( document.createTextNode( data ) ); + else + script.text = data; + + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709). + head.insertBefore( script, head.firstChild ); + head.removeChild( script ); + } + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, length = object.length; + + if ( args ) { + if ( length === undefined ) { + for ( name in object ) + if ( callback.apply( object[ name ], args ) === false ) + break; + } else + for ( ; i < length; ) + if ( callback.apply( object[ i++ ], args ) === false ) + break; + + // A special, fast, case for the most common use of each + } else { + if ( length === undefined ) { + for ( name in object ) + if ( callback.call( object[ name ], name, object[ name ] ) === false ) + break; + } else + for ( var value = object[0]; + i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} + } + + return object; + }, + + prop: function( elem, value, type, i, name ) { + // Handle executable functions + if ( jQuery.isFunction( value ) ) + value = value.call( elem, i ); + + // Handle passing in a number to a CSS property + return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ? + value + "px" : + value; + }, + + className: { + // internal only, use addClass("class") + add: function( elem, classNames ) { + jQuery.each((classNames || "").split(/\s+/), function(i, className){ + if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) + elem.className += (elem.className ? " " : "") + className; + }); + }, + + // internal only, use removeClass("class") + remove: function( elem, classNames ) { + if (elem.nodeType == 1) + elem.className = classNames !== undefined ? + jQuery.grep(elem.className.split(/\s+/), function(className){ + return !jQuery.className.has( classNames, className ); + }).join(" ") : + ""; + }, + + // internal only, use hasClass("class") + has: function( elem, className ) { + return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; + } + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + var old = {}; + // Remember the old values, and insert the new ones + for ( var name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + callback.call( elem ); + + // Revert the old values + for ( var name in options ) + elem.style[ name ] = old[ name ]; + }, + + css: function( elem, name, force, extra ) { + if ( name == "width" || name == "height" ) { + var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; + + function getWH() { + val = name == "width" ? elem.offsetWidth : elem.offsetHeight; + + if ( extra === "border" ) + return; + + jQuery.each( which, function() { + if ( !extra ) + val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; + if ( extra === "margin" ) + val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0; + else + val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; + }); + } + + if ( elem.offsetWidth !== 0 ) + getWH(); + else + jQuery.swap( elem, props, getWH ); + + return Math.max(0, Math.round(val)); + } + + return jQuery.curCSS( elem, name, force ); + }, + + curCSS: function( elem, name, force ) { + var ret, style = elem.style; + + // We need to handle opacity special in IE + if ( name == "opacity" && !jQuery.support.opacity ) { + ret = jQuery.attr( style, "opacity" ); + + return ret == "" ? + "1" : + ret; + } + + // Make sure we're using the right name for getting the float value + if ( name.match( /float/i ) ) + name = styleFloat; + + if ( !force && style && style[ name ] ) + ret = style[ name ]; + + else if ( defaultView.getComputedStyle ) { + + // Only "float" is needed here + if ( name.match( /float/i ) ) + name = "float"; + + name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); + + var computedStyle = defaultView.getComputedStyle( elem, null ); + + if ( computedStyle ) + ret = computedStyle.getPropertyValue( name ); + + // We should always get a number back from opacity + if ( name == "opacity" && ret == "" ) + ret = "1"; + + } else if ( elem.currentStyle ) { + var camelCase = name.replace(/\-(\w)/g, function(all, letter){ + return letter.toUpperCase(); + }); + + ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { + // Remember the original values + var left = style.left, rsLeft = elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + elem.runtimeStyle.left = elem.currentStyle.left; + style.left = ret || 0; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + elem.runtimeStyle.left = rsLeft; + } + } + + return ret; + }, + + clean: function( elems, context, fragment ) { + context = context || document; + + // !context.createElement fails in IE with an error but returns typeof 'object' + if ( typeof context.createElement === "undefined" ) + context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) { + var match = /^<(\w+)\s*\/?>$/.exec(elems[0]); + if ( match ) + return [ context.createElement( match[1] ) ]; + } + + var ret = [], scripts = [], div = context.createElement("div"); + + jQuery.each(elems, function(i, elem){ + if ( typeof elem === "number" ) + elem += ''; + + if ( !elem ) + return; + + // Convert html string into DOM nodes + if ( typeof elem === "string" ) { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ + return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? + all : + front + ">"; + }); + + // Trim whitespace, otherwise indexOf won't work as expected + var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase(); + + var wrap = + // option or optgroup + !tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && + [ 1, "", "
" ] || + + !tags.indexOf("", "" ] || + + // matched above + (!tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + // IE can't serialize and + + + + + +
+
+ +
+
+
+
+ +
+ + +
+
+
+ +
+

个人信息

+ + + + + + + + +
>个人中心>个人信息
+
+
+
+ +

XXX

+
+
+ +

XXX

+
+
+ +

XXX

+
+
+ +

XXX

+
+
+ +

XXX

+
+
+ +

XXX

+
+
+
+
+
+
+ + + +
+
+ +
+
+

基本信息

+ + + + + + + + + + + + + + + + + + + + + + + + + +
姓名:XXX
学号:XXX
专业:XXX
手机:XXX
邮箱:XXX
家乡:XXX
+
+
+

兴趣爱好

+ + + + + + + + + + + + + + + + + + + + + + + + + +
书籍:XXX
运动:XXX
音乐:XXX
电影:XXX
研究技术:XXX
其他爱好:XXX
+
+
+
+
+
+ + diff --git a/ROOT/unfinished_projects.html b/ROOT/unfinished_projects.html new file mode 100644 index 0000000..9e41eff --- /dev/null +++ b/ROOT/unfinished_projects.html @@ -0,0 +1,118 @@ + + + + +未完成项目 + + + + + +
+
+ +
+
+
+
+ +
+ + +
+
+
+ +
+

未完成项目

+ + + + + + + + +
home>个人中心>未完成项目
+
+
+
+ +
+

项目名字:XX

+

项目成员:XX

+

项目简介:XXXXXXXX

+ +
+
+
+
+ +
+

项目名字:XX

+

项目成员:XX

+

项目简介:XXXXXXXX

+ +
+
+
+
+ +
+

项目名字:XX

+

项目成员:XX

+

项目简介:XXXXXXXX

+ +
+
+
+
+ +
+

项目名字:XX

+

项目成员:XX

+

项目简介:XXXXXXXX

+ +
+
+
+
+
+
+
+ + + + + diff --git a/src/org/scauhci/official/module/DisplayModule.java b/src/org/scauhci/official/module/DisplayModule.java new file mode 100644 index 0000000..063eb67 --- /dev/null +++ b/src/org/scauhci/official/module/DisplayModule.java @@ -0,0 +1,24 @@ +/** + * + */ +package org.scauhci.official.module; + +import java.util.Map; + +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +/** + * @author ClarenceAu + * + */ +@IocBean +public class DisplayModule { + + @At("index") + @Ok("jsp:page.front.index") + public Map index() { + return null; + } +}