From 28a57cb7d7be3c5f31a5fdf15a3b639674946f99 Mon Sep 17 00:00:00 2001 From: Fireply Date: Tue, 31 May 2016 02:53:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=BE=E7=A4=BA=E6=96=B0?= =?UTF-8?q?=E9=97=BB=E5=88=97=E8=A1=A8=E5=92=8C=E6=96=B0=E9=97=BB=E8=AF=A6?= =?UTF-8?q?=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebRoot/css/enter.css | 19 ++++ WebRoot/index.jsp | 10 +- WebRoot/navbar.jsp | 25 +---- WebRoot/pages/join-us.jsp | 43 +++++++++ WebRoot/pages/news-detail.jsp | 43 +++++++++ WebRoot/pages/news.jsp | 63 +++++++++++++ WebRoot/signin.jsp | 6 +- .../org/fireply/enter/action/NewsAction.java | 92 +++++++++++++++++++ .../org/fireply/enter/dao/impl/DaoImpl.java | 2 +- .../java/org/fireply/enter/model/News.java | 6 ++ .../fireply/enter/service/BaseService.java | 12 +++ .../fireply/enter/service/NewsService.java | 14 +++ .../enter/service/impl/BaseServiceImpl.java | 44 ++++++++- .../enter/service/impl/NewsServiceImpl.java | 25 +++++ src/main/resources/struts.xml | 12 ++- .../enter/test/service/NewsServiceTest.java | 44 +++++++++ 16 files changed, 423 insertions(+), 37 deletions(-) create mode 100644 WebRoot/css/enter.css create mode 100644 WebRoot/pages/join-us.jsp create mode 100644 WebRoot/pages/news-detail.jsp create mode 100644 WebRoot/pages/news.jsp create mode 100644 src/main/java/org/fireply/enter/action/NewsAction.java create mode 100644 src/main/java/org/fireply/enter/service/NewsService.java create mode 100644 src/main/java/org/fireply/enter/service/impl/NewsServiceImpl.java create mode 100644 src/test/java/org/fireply/enter/test/service/NewsServiceTest.java diff --git a/WebRoot/css/enter.css b/WebRoot/css/enter.css new file mode 100644 index 0000000..ce59919 --- /dev/null +++ b/WebRoot/css/enter.css @@ -0,0 +1,19 @@ +body { + padding-top: 70px; +} + +.enter-btn-detail { + width: 60%; + margin-top: 20%; + margin-left: 20% +} + +.enter-center-vertical { + position: relative; + transform: translateY(40%); +} + +.enter-scrollable { + max-height: 200px; + overflow-y: scroll; +} \ No newline at end of file diff --git a/WebRoot/index.jsp b/WebRoot/index.jsp index 15f5115..4bfc5d7 100644 --- a/WebRoot/index.jsp +++ b/WebRoot/index.jsp @@ -5,7 +5,7 @@ - Insert title here + VR AR MR 企业网站 @@ -89,7 +89,7 @@
Generic placeholder image -

查看详情

+

查看详情

@@ -102,7 +102,7 @@
Generic placeholder image -

查看详情

+

查看详情

@@ -115,7 +115,7 @@
Generic placeholder image -

查看详情

+

查看详情

@@ -151,7 +151,7 @@ - - - - - \ No newline at end of file diff --git a/WebRoot/pages/join-us.jsp b/WebRoot/pages/join-us.jsp new file mode 100644 index 0000000..df71c36 --- /dev/null +++ b/WebRoot/pages/join-us.jsp @@ -0,0 +1,43 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<% +String path = request.getContextPath(); +String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; +%> + + + + + + + Insert title here + + + + + + + + + + + + +
+
+

加入我们吧

+

成为我们的代理商,在 VR 元年

+

联系我们

+
+
+ + + + + + + + + diff --git a/WebRoot/pages/news-detail.jsp b/WebRoot/pages/news-detail.jsp new file mode 100644 index 0000000..d952b9e --- /dev/null +++ b/WebRoot/pages/news-detail.jsp @@ -0,0 +1,43 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib uri="/struts-tags" prefix="s" %> +<% +String path = request.getContextPath(); +String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; +%> + + + + + + + 新闻动态 + + + + + + + + + + + + +
+ + 新闻 id: ${newsId }

+ 新闻标题 EL: ${news.title }

+ 新闻内容 EL: ${news.content }

+ +
+ + + + + + + + diff --git a/WebRoot/pages/news.jsp b/WebRoot/pages/news.jsp new file mode 100644 index 0000000..d16890d --- /dev/null +++ b/WebRoot/pages/news.jsp @@ -0,0 +1,63 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib uri="/struts-tags" prefix="s" %> +<% +String path = request.getContextPath(); +String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; +%> + + + + + + + Insert title here + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ +
+ +
+ + + + + + + + + + \ No newline at end of file diff --git a/WebRoot/signin.jsp b/WebRoot/signin.jsp index 615f7ec..2a811b7 100644 --- a/WebRoot/signin.jsp +++ b/WebRoot/signin.jsp @@ -23,7 +23,7 @@
-
diff --git a/src/main/java/org/fireply/enter/action/NewsAction.java b/src/main/java/org/fireply/enter/action/NewsAction.java new file mode 100644 index 0000000..67708fd --- /dev/null +++ b/src/main/java/org/fireply/enter/action/NewsAction.java @@ -0,0 +1,92 @@ +package org.fireply.enter.action; + +import java.util.List; +import java.util.Map; + +import org.apache.struts2.interceptor.RequestAware; +import org.apache.struts2.interceptor.SessionAware; +import org.fireply.enter.model.News; +import org.fireply.enter.service.NewsService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; + +import com.opensymphony.xwork2.ActionSupport; + +@Controller +public class NewsAction extends ActionSupport implements RequestAware, SessionAware { + + @Autowired + @Qualifier("newsServiceImpl") + private NewsService newsService; + + private Map request; + private Map session; + + private List newsList; // 请求新闻列表时将数据库查询结果存放在 newsList + private String newsId; // 请求新闻详情时传递过来的 id + private News news; // 请求新闻详情时将数据库查询结果存放在 news + + private static final Logger logger = LoggerFactory.getLogger(NewsAction.class); + + @Override + public String execute() throws Exception { + newsList = newsService.getAllNews(); + + if (newsList == null || newsList.size() <= 0) { + logger.warn("从数据库查询不到任意一条新闻"); + return ERROR; + } else { + logger.debug("从数据库查询新闻列表成功"); + return "news"; + } + } + + public String detail() throws Exception { + news = newsService.getNews(newsId); + if (news == null) { + logger.warn("从数据库查询 id={} 的新闻失败", newsId); + return ERROR; + } else { + logger.debug("从数据库查询到了 id={} 的新闻", newsId); + return "news-detail"; + } + } + + @Override + public void setRequest(Map request) { + this.request = request; + } + + @Override + public void setSession(Map session) { + this.session = session; + } + + public List getNewsList() { + return newsList; + } + + public void setNewsList(List newsList) { + this.newsList = newsList; + } + + public String getNewsId() { + return newsId; + } + + public void setNewsId(String newsId) { + this.newsId = newsId; + } + + public News getNews() { + return news; + } + + public void setNews(News news) { + this.news = news; + } + +} diff --git a/src/main/java/org/fireply/enter/dao/impl/DaoImpl.java b/src/main/java/org/fireply/enter/dao/impl/DaoImpl.java index fcb9704..53bb6c3 100644 --- a/src/main/java/org/fireply/enter/dao/impl/DaoImpl.java +++ b/src/main/java/org/fireply/enter/dao/impl/DaoImpl.java @@ -69,7 +69,7 @@ public List get(Class clazz, Map fieldsMap) { @Override public List getAll(Class clazz) { - String hql = "from" + clazz.getSimpleName(); + String hql = "from " + clazz.getSimpleName(); return executeQuery(hql); } diff --git a/src/main/java/org/fireply/enter/model/News.java b/src/main/java/org/fireply/enter/model/News.java index 8cc3865..9c7b115 100644 --- a/src/main/java/org/fireply/enter/model/News.java +++ b/src/main/java/org/fireply/enter/model/News.java @@ -36,6 +36,12 @@ public News(String id, User user, String title, String content, Date createTime, this.commits = commits; } + @Override + public String toString() { + return "News [id=" + id + ", user=" + user + ", title=" + title + ", content=" + content + ", createTime=" + + createTime + "]"; + } + public String getId() { return this.id; } diff --git a/src/main/java/org/fireply/enter/service/BaseService.java b/src/main/java/org/fireply/enter/service/BaseService.java index 60a7eba..df24f38 100644 --- a/src/main/java/org/fireply/enter/service/BaseService.java +++ b/src/main/java/org/fireply/enter/service/BaseService.java @@ -1,6 +1,8 @@ package org.fireply.enter.service; import java.io.Serializable; +import java.util.List; +import java.util.Map; import org.springframework.stereotype.Service; @@ -18,4 +20,14 @@ public interface BaseService { Object get(String entityName, Serializable id); + List getAll(Class clazz); + + List getAll(String modeName); + + List get(Class clazz, String fieldName, Object fieldValue); + + List get(String modelName, String fieldName, Object fieldValue); + + List get(Class clazz, Map fieldsMap); + } diff --git a/src/main/java/org/fireply/enter/service/NewsService.java b/src/main/java/org/fireply/enter/service/NewsService.java new file mode 100644 index 0000000..e8f584d --- /dev/null +++ b/src/main/java/org/fireply/enter/service/NewsService.java @@ -0,0 +1,14 @@ +package org.fireply.enter.service; + +import java.io.Serializable; +import java.util.List; + +import org.fireply.enter.model.News; + +public interface NewsService extends BaseService { + + List getAllNews(); + + News getNews(Serializable id); + +} diff --git a/src/main/java/org/fireply/enter/service/impl/BaseServiceImpl.java b/src/main/java/org/fireply/enter/service/impl/BaseServiceImpl.java index 214a87b..112ec18 100644 --- a/src/main/java/org/fireply/enter/service/impl/BaseServiceImpl.java +++ b/src/main/java/org/fireply/enter/service/impl/BaseServiceImpl.java @@ -1,9 +1,11 @@ package org.fireply.enter.service.impl; import java.io.Serializable; +import java.util.List; +import java.util.Map; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -17,7 +19,7 @@ @Transactional(readOnly=true) public class BaseServiceImpl implements BaseService { -// private static final Logger logger = LoggerFactory.getLogger(BaseServiceImpl.class); + private static final Logger logger = LoggerFactory.getLogger(BaseServiceImpl.class); @Autowired @Qualifier("daoImpl") @@ -104,4 +106,40 @@ public Object get(String entityName, Serializable id) { return result; } + @Override + public List getAll(Class clazz) { + if (clazz != null) { + List result = dao.getAll(clazz); + logger.debug("获取所有 {} 实体成功", clazz.getSimpleName()); + return result; + } else { + logger.warn("获取所有实体失败,因为试图获取与 null 对应的实体"); + return null; + } + } + + @Override + public List getAll(String modeName) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List get(Class clazz, String fieldName, Object fieldValue) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List get(String modelName, String fieldName, Object fieldValue) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List get(Class clazz, Map fieldsMap) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/src/main/java/org/fireply/enter/service/impl/NewsServiceImpl.java b/src/main/java/org/fireply/enter/service/impl/NewsServiceImpl.java new file mode 100644 index 0000000..6067550 --- /dev/null +++ b/src/main/java/org/fireply/enter/service/impl/NewsServiceImpl.java @@ -0,0 +1,25 @@ +package org.fireply.enter.service.impl; + +import java.io.Serializable; +import java.util.List; + +import org.fireply.enter.model.News; +import org.fireply.enter.service.NewsService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional(readOnly=true) +public class NewsServiceImpl extends BaseServiceImpl implements NewsService{ + + @Override + public List getAllNews() { + return (List) getAll(News.class); + } + + @Override + public News getNews(Serializable id) { + return (News) get(News.class, id); + } + +} diff --git a/src/main/resources/struts.xml b/src/main/resources/struts.xml index 5d4cb94..a7b875f 100644 --- a/src/main/resources/struts.xml +++ b/src/main/resources/struts.xml @@ -20,7 +20,8 @@ /signin.jsp - error/error.jsp + /error/error.jsp + /index.jsp @@ -28,12 +29,13 @@ - profile/user.jsp - profile/admin.jsp + /profile/user.jsp + /profile/admin.jsp - - profile/user.jsp + + /pages/news.jsp + /pages/news-detail.jsp diff --git a/src/test/java/org/fireply/enter/test/service/NewsServiceTest.java b/src/test/java/org/fireply/enter/test/service/NewsServiceTest.java new file mode 100644 index 0000000..f616e49 --- /dev/null +++ b/src/test/java/org/fireply/enter/test/service/NewsServiceTest.java @@ -0,0 +1,44 @@ +package org.fireply.enter.test.service; + +import static org.junit.Assert.assertNotNull; + +import java.util.Date; +import java.util.List; + +import org.fireply.enter.model.News; +import org.fireply.enter.service.NewsService; +import org.fireply.enter.test.BaseSpringJunit4Test; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; + +public class NewsServiceTest extends BaseSpringJunit4Test { + + @Autowired + @Qualifier("newsServiceImpl") + private NewsService newsService; + + private static final Logger logger = LoggerFactory.getLogger(NewsServiceTest.class); + + @Test + public void newsServiceTest() { + String id = "en:mr-device-world"; + String title = "MR(混合现实)智能头戴显示设备全球巡展启动"; + String content = "今天上午,北京微视&国人恒宇科技在珠海德瀚国际会议中心酒店的海天一色厅举办的一场《中国首家MR(混合现实)智能头戴显示设备全球巡展启动仪式》,给众多的投资界和广大的消费行业以及各个领域的专家带来了一场别开生面的汇报及发布会,这家专门从事VR(虚拟现实)、AR(增强现实)、MR(混合现实)(以下简称3R) 等专业的人机数字交互领域的科技公司,从航天、教育、军事、体育、工业、旅游、娱乐等六大领域向我们展示了这些高科技技术对于未来的无限可能。微视图像董事长欧阳骏致开幕辞,他毕业于北京大学,在中科院自动化所做研发工作,1994年创建微视图像公司,即微视新纪元公司的前身,有20多年的技术积累,现任中国图像图形学会理事。微视图像副总经理欧阳哲作了题为“回顾历史,见证辉煌”的演讲,他是985重点大学 成都电子科技大学学霸 双学士,在视觉行业积累十年。周岩,国人恒宇CEO ,毕业于日本东京数字好莱坞大学,博士,留日8年,曾任索尼公司木原研究室从事lRC研发工作,他演讲的课题是Project Chaos卡厄斯计划。吴柳燃,中国十大策划人,整合营销传播专家,品牌战略管理专家,资深广告人,于1988年起正式踏入营销领域,数十年来经其手的营销项目尚无败笔。崇尚“四两拨千斤“的运营管理思路,已帮助多家中小企业发展、上市,取得了前所未有的佳绩。珠海这个环境美丽的城市是他们的出发站是他们此次巡展的启动仪式所在地,下一站他们将在美国的硅谷率先发布这款MR(混合现实)智能眼镜的演示内容、在此之后他们会在北京、新西兰、德国、日本先后举办盛大的巡演party与其他 3R 友商相比他们的团队实力还是相当强大的,首席科学家Mark Billinghurst教授,曾是新西兰Hitlab研究室的研究室主任,师从AR、VR领域的发起人也是MagicLeap技术的原始创立者Tom Furness教授。 发布会上他们除了开启这个启动仪式外,还展现了他们之前在国内建立的一些线下体验馆以及他们为很多行业提供的技术服务与支持的展示,并且在发布会现场有意向投资的人和机构、公司所表达的投资额总额达3亿多美金(20亿人民币)远远超过计划融资3亿人民币的额度,会后在和意向投资人进行筛选沟通。可能这也是迄今为止这个行业的最大融资比例。本稿件所含文字、图片和音视频资料,版权均属齐鲁晚报所有,任何媒体、网站或个人未经授权不得转载,违者将依法追究责任。"; + String enTitle = "MR (Mixed Reality) device world"; + String enContent = "This morning, the Beijing Microview & people Hengyu Technology at Zhuhai International Conference Center Hotel de Han sky and sea organized by the Office of a 'China's first MR (Mixed Reality) wearing a smart display device launch world tour', to many the investment community and the majority of experts in various fields of consumer industries and bring a report on the conference and a spectacular, this specialized in VR (virtual reality), AR (Augmented reality), MR (mixed reality) (hereinafter referred to as 3R) professionals such as human-computer interaction in the field of digital technology companies from the aerospace, education, military, sports, industry, tourism, entertainment and other six areas to show us these high technology for a future of unlimited possibilities. Ouyang Chun, chairman of the micro-view image opening remarks, he graduated from Beijing University, Chinese Academy of Sciences R & D work done by automation, created in 1994, as the micro-image company, Microview the predecessor company, has accumulated 20 years of technology, the current Chinese image and graphics Society. As micro-chul, deputy general manager Ouyang image made a presentation entitled 'Looking back at history, to witness the brilliant' speech, he was 985 key universities of Chengdu University of Electronic Science and Technology Studies Pa double degree in visual industry has accumulated decades. Zhou Yan, people Hengyu CEO, Japan and graduated from Tokyo Digital Hollywood University, Ph.D., in Japan for eight years, served as Sony Kihara Research Center in lRC research and development work is the subject of his speech Project Chaos Ka Esi plan. Wu Liu burning, China's top ten planning, integrated marketing communications experts, strategic brand management experts, senior advertising, in 1988 formally entered the field of marketing, decades after their hands marketing program no flaw. Advocating 'skillfully deflected the question,' the operation and management ideas, has helped a number of SMEs, market, achieved unprecedented success. Beautiful city Zhuhai this environment is their starting station of the tour is to launch their location, their next stop will be the first release of this MR (Mixed Reality) smart glasses presentations Silicon Valley in the United States, after which they will in Beijing, New Zealand, Germany, Japan has held a grand tour party compared to other vendors' 3R their team strength is still quite strong, chief scientist Professor Mark Billinghurst, who is research director of New Zealand Hitlab lab, under the tutelage of AR promoters VR field is the original founder MagicLeap art professor Tom Furness. In addition to the conference, they open this launch, but also show some lines in the country before they established their museum experience and to provide technical service and support in many sectors of the show, and at the conference site and are interested in investing institutions, the total amount of investment company expressed over more than 300 million dollars (2 billion yuan) plans to raise far more than the amount of 300 million yuan, and after the screening of people interested in investing in communication. Perhaps this is by far the largest proportion of financing the industry. The manuscript contains text, images, video and audio material, the Qilu Evening News copyright are all, any media, websites or individuals shall not be reproduced without authorization, and offenders will be prosecuted according to law."; + Date createTime = new Date(); + + News news = new News(id, enTitle, enContent, createTime); + + newsService.persist(news); + + List newsList = newsService.getAllNews(); + + logger.debug(newsList.toString()); + + assertNotNull(newsList); + } +}