소스 검색

推荐系统初始化

yaobo 7 년 전
커밋
4ce75554ea
54개의 변경된 파일1531개의 추가작업 그리고 0개의 파일을 삭제
  1. 12 0
      .classpath
  2. 13 0
      .mymetadata
  3. 4 0
      .settings/com.genuitec.eclipse.j2eedt.core.prefs
  4. 9 0
      .settings/org.eclipse.jdt.core.prefs
  5. 5 0
      .settings/org.eclipse.m2e.core.prefs
  6. 10 0
      .settings/org.eclipse.wst.common.component
  7. 137 0
      pom.xml
  8. 83 0
      src/main/java/cn/efunbox/controller/ClickController.java
  9. 34 0
      src/main/java/cn/efunbox/controller/PersonController.java
  10. 121 0
      src/main/java/cn/efunbox/controller/RecommendController.java
  11. 21 0
      src/main/java/cn/efunbox/dao/ClickMapper.java
  12. 19 0
      src/main/java/cn/efunbox/dao/PersonMapper.java
  13. 26 0
      src/main/java/cn/efunbox/dao/RecommendMapper.java
  14. 15 0
      src/main/java/cn/efunbox/mapping/ClickMapper.xml
  15. 8 0
      src/main/java/cn/efunbox/mapping/PersonMapper.xml
  16. 15 0
      src/main/java/cn/efunbox/mapping/RecommendMapper.xml
  17. 318 0
      src/main/java/cn/efunbox/model/Click.java
  18. 37 0
      src/main/java/cn/efunbox/model/Person.java
  19. 188 0
      src/main/java/cn/efunbox/model/Recommend.java
  20. 21 0
      src/main/java/cn/efunbox/service/IClickService.java
  21. 14 0
      src/main/java/cn/efunbox/service/IPersonService.java
  22. 20 0
      src/main/java/cn/efunbox/service/IRecommendService.java
  23. 36 0
      src/main/java/cn/efunbox/service/impl/ClickServiceImpl.java
  24. 30 0
      src/main/java/cn/efunbox/service/impl/PersonServiceImpl.java
  25. 37 0
      src/main/java/cn/efunbox/service/impl/RecommendServiceImpl.java
  26. 13 0
      src/main/resources/log4j.properties
  27. 18 0
      src/main/resources/mybatis-config.xml
  28. 63 0
      src/main/resources/mybatis-spring.xml
  29. 16 0
      src/main/resources/mysqldb.properties
  30. 30 0
      src/main/resources/spring-mvc.xml
  31. 24 0
      src/main/resources/spring.xml
  32. 3 0
      src/main/webapp/META-INF/MANIFEST.MF
  33. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/controller/ClickController.class
  34. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/controller/PersonController.class
  35. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/controller/RecommendController.class
  36. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/dao/ClickMapper.class
  37. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/dao/PersonMapper.class
  38. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/dao/RecommendMapper.class
  39. 15 0
      src/main/webapp/WEB-INF/classes/cn/efunbox/mapping/ClickMapper.xml
  40. 8 0
      src/main/webapp/WEB-INF/classes/cn/efunbox/mapping/PersonMapper.xml
  41. 15 0
      src/main/webapp/WEB-INF/classes/cn/efunbox/mapping/RecommendMapper.xml
  42. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/model/Click.class
  43. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/model/Person.class
  44. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/model/Recommend.class
  45. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/service/IClickService.class
  46. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/service/IPersonService.class
  47. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/service/IRecommendService.class
  48. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/service/impl/ClickServiceImpl.class
  49. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/service/impl/PersonServiceImpl.class
  50. BIN
      src/main/webapp/WEB-INF/classes/cn/efunbox/service/impl/RecommendServiceImpl.class
  51. 24 0
      src/main/webapp/WEB-INF/views/showRecmds.jsp
  52. 24 0
      src/main/webapp/WEB-INF/views/showperson.jsp
  53. 40 0
      src/main/webapp/WEB-INF/web.xml
  54. 5 0
      src/main/webapp/index.jsp

+ 12 - 0
.classpath

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="src/main/webapp/WEB-INF/classes"/>
+</classpath>

+ 13 - 0
.mymetadata

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-module
+  type="WEB"
+  name="efunbox-recmd"
+  id="myeclipse.1503369537612"
+  context-root="/efunbox-recmd"
+  j2ee-spec="5.0"
+  archive="efunbox-recmd.war">
+  <attributes>
+    <attribute name="webrootdir" value="src/main/webapp" />
+  </attributes>
+</project-module>
+

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 4 - 0
.settings/com.genuitec.eclipse.j2eedt.core.prefs


+ 9 - 0
.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,9 @@
+#Tue Aug 22 10:38:57 CST 2017
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.5

+ 5 - 0
.settings/org.eclipse.m2e.core.prefs

@@ -0,0 +1,5 @@
+#Tue Aug 22 10:38:56 CST 2017
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

+ 10 - 0
.settings/org.eclipse.wst.common.component

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="efunbox-recmd">
+        <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+        <property name="java-output-path" value="/efunbox-recmd/src/main/webapp/WEB-INF/classes"/>
+        <property name="context-root" value="/efunbox-recmd"/>
+    </wb-module>
+</project-modules>

+ 137 - 0
pom.xml

@@ -0,0 +1,137 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>cn.efunbox.recommend</groupId>
+  <artifactId>efunbox-recommend</artifactId>
+  <packaging>war</packaging>
+  <version>0.0.1-SNAPSHOT</version>
+  <name>efunbox-recommend</name>
+  <url>http://maven.apache.org</url>
+  <properties>
+        <!-- spring版本号 -->
+        <spring.version>4.0.2.RELEASE</spring.version>
+    </properties>
+  
+  
+  <dependencies>
+  	<!-- spring核心包 -->
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-web</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-oxm</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-tx</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-jdbc</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aop</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context-support</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+        <!-- 添加MyBatis依赖 -->
+        <dependency>
+            <groupId>org.mybatis</groupId>
+            <artifactId>mybatis</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.0.8</version>
+        </dependency>
+        <!-- 阿里巴巴的数据库连接池 -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.0.16</version>
+        </dependency>
+        <!-- spring结成mybatis -->
+        <dependency>
+            <groupId>org.mybatis</groupId>
+            <artifactId>mybatis-spring</artifactId>
+            <version>1.2.3</version>
+        </dependency>
+        <!-- jsp标准标签库 -->
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>jstl</artifactId>
+            <version>1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.16</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.6.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-nop</artifactId>
+            <version>1.6.4</version>
+        </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+    	<groupId>org.codehaus.jackson</groupId>
+    	<artifactId>jackson-core-asl</artifactId>
+    	<version>1.9.12</version>
+    </dependency>
+    <dependency>
+    	<groupId>org.codehaus.jackson</groupId>
+    	<artifactId>jackson-mapper-asl</artifactId>
+    	<version>1.9.12</version>
+    </dependency>
+    <dependency>
+    	<groupId>javax.servlet</groupId>
+    	<artifactId>servlet-api</artifactId>
+    	<version>2.5</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <finalName>efunbox-recommend</finalName>
+  </build>
+</project>

+ 83 - 0
src/main/java/cn/efunbox/controller/ClickController.java

@@ -0,0 +1,83 @@
+package cn.efunbox.controller;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.json.MappingJacksonJsonView;
+
+import cn.efunbox.model.Click;
+import cn.efunbox.service.IClickService;
+
+@SuppressWarnings("deprecation")
+@Controller
+@RequestMapping("/click")
+public class ClickController {
+	
+	@Autowired  
+	private  HttpServletRequest request;
+	
+    private IClickService clickService;
+    
+    public IClickService getRecommendService() {
+        return clickService;
+    }
+
+    @Autowired
+    public void setPersonService(IClickService clickService) {
+        this.clickService = clickService;
+    }
+
+    @RequestMapping("/getAll")
+    @ResponseBody
+    public Map<String,Object> getAll(){
+        List<Click> clicks = clickService.loadAll();
+        Map<String, Object> map = new HashMap<String, Object>(2);
+        map.put("code", 200);
+        map.put("rows", clicks);
+        return map;
+    }
+
+    @RequestMapping("/search")
+    @ResponseBody
+    public Map<String,Object> searchRecommend(){
+    	String ageStr = request.getParameter("age");
+		String sexStr = request.getParameter("sex");
+		String pageStr = request.getParameter("page");
+		String sizeStr = request.getParameter("size");
+		if(ageStr==null)
+			ageStr = "5";
+		if(sexStr==null)
+			sexStr = "1";
+		if(pageStr==null)
+			pageStr = "1";
+		if(sizeStr==null)
+			sizeStr = "10";
+		int age = Integer.valueOf(ageStr);
+		int sex = Integer.valueOf(sexStr);
+		int page = Integer.valueOf(pageStr);
+		int size = Integer.valueOf(sizeStr);
+		if(age<0 || age>20)
+			age = 5;
+		if(sex!=1 && sex!=2)
+			sex = 1;
+		if(page<1)
+			page = 1;
+		if(size<10)
+			size = 10;
+		
+		Map<String, Object> map = new HashMap<String, Object>(2);
+        map.put("code", 200);
+        map.put("rows", 1);
+        return map;
+    }
+    
+}

+ 34 - 0
src/main/java/cn/efunbox/controller/PersonController.java

@@ -0,0 +1,34 @@
+package cn.efunbox.controller;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import cn.efunbox.model.Person;
+import cn.efunbox.service.IPersonService;
+
+@Controller
+@RequestMapping("/person")
+public class PersonController {
+    
+    private IPersonService personService;
+    
+    public IPersonService getPersonService() {
+        return personService;
+    }
+
+    @Autowired
+    public void setPersonService(IPersonService personService) {
+        this.personService = personService;
+    }
+
+    @RequestMapping("/show")
+    public String showPersons(Model model){
+        List<Person> persons = personService.loadPersons();
+        model.addAttribute("persons", persons);
+        return "showperson";
+    }
+}

+ 121 - 0
src/main/java/cn/efunbox/controller/RecommendController.java

@@ -0,0 +1,121 @@
+package cn.efunbox.controller;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.view.json.MappingJacksonJsonView;
+
+import cn.efunbox.model.Recommend;
+import cn.efunbox.service.IRecommendService;
+
+@SuppressWarnings("deprecation")
+@Controller
+@RequestMapping("/recommend")
+public class RecommendController {
+	
+	@Autowired  
+	private  HttpServletRequest request;
+	
+    private IRecommendService recmdService;
+    
+    public IRecommendService getRecommendService() {
+        return recmdService;
+    }
+
+    @Autowired
+    public void setPersonService(IRecommendService recmdService) {
+        this.recmdService = recmdService;
+    }
+/*
+    @RequestMapping("/showAll")
+    public String getRecommend(Model model){
+        List<Recommend> recmds = recmdService.loadAll();
+        model.addAttribute("recmds", recmds);
+        return "showRecmds";
+    }
+    
+    @ResponseBody
+    @RequestMapping("/getStr")
+    public String getRecommendStr(){
+        List<Recommend> recmds = recmdService.loadAll();
+        return recmds.toString();
+    }
+
+    @RequestMapping("/getJson")
+    @ResponseBody
+    public Map<String,Object> getRecommendJson(){
+        List<Recommend> recmds = recmdService.loadAll();
+        Map<String, Object> map = new HashMap<String, Object>(3);
+        map.put("code", 200);
+        map.put("num", 3);
+        map.put("recmds", recmds);
+        return map;
+    }
+    
+
+    @RequestMapping("/getJson2")
+    @ResponseBody
+    public ModelAndView getRecommendJson2(){
+        List<Recommend> recmds = recmdService.loadAll();
+        Map<String, Object> map = new HashMap<String, Object>(3);
+        map.put("code", 200);
+        map.put("num", 3);
+        map.put("recmds", recmds);
+        return new ModelAndView(new MappingJacksonJsonView(),map);
+    }
+*/
+    @RequestMapping("/getAll")
+    @ResponseBody
+    public Map<String,Object> getRecommendAll(){
+        List<Recommend> recmds = recmdService.loadAll();
+        Map<String, Object> map = new HashMap<String, Object>(2);
+        map.put("code", 200);
+        map.put("rows", recmds);
+        return map;
+    }
+
+    @RequestMapping("/search")
+    @ResponseBody
+    public Map<String,Object> searchRecommend(){
+    	String ageStr = request.getParameter("age");
+		String sexStr = request.getParameter("sex");
+		String pageStr = request.getParameter("page");
+		String sizeStr = request.getParameter("size");
+		if(ageStr==null)
+			ageStr = "5";
+		if(sexStr==null)
+			sexStr = "1";
+		if(pageStr==null)
+			pageStr = "1";
+		if(sizeStr==null)
+			sizeStr = "10";
+		int age = Integer.valueOf(ageStr);
+		int sex = Integer.valueOf(sexStr);
+		int page = Integer.valueOf(pageStr);
+		int size = Integer.valueOf(sizeStr);
+		if(age<0 || age>20)
+			age = 5;
+		if(sex!=1 && sex!=2)
+			sex = 1;
+		if(page<1)
+			page = 1;
+		if(size<10)
+			size = 10;
+		int offset = Math.max(0, (page-1)) * size;
+        List<Recommend> recmds = recmdService.search(age, sex, size, offset);
+        Map<String, Object> map = new HashMap<String, Object>(2);
+        map.put("code", 200);
+        map.put("rows", recmds);
+        return map;
+    }
+    
+}

+ 21 - 0
src/main/java/cn/efunbox/dao/ClickMapper.java

@@ -0,0 +1,21 @@
+package cn.efunbox.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import cn.efunbox.model.Click;
+
+public interface ClickMapper {
+    /**
+     * 插入一条记录
+     * @param person
+     */
+    int insert(Click click);
+    
+    /**
+     * 查询所有
+     * @return
+     */
+    List<Click> queryAll();
+
+}

+ 19 - 0
src/main/java/cn/efunbox/dao/PersonMapper.java

@@ -0,0 +1,19 @@
+package cn.efunbox.dao;
+
+import java.util.List;
+
+import cn.efunbox.model.Person;
+
+public interface PersonMapper {
+    /**
+     * 插入一条记录
+     * @param person
+     */
+    void insert(Person person);
+    
+    /**
+     * 查询所有
+     * @return
+     */
+    List<Person> queryAll();
+}

+ 26 - 0
src/main/java/cn/efunbox/dao/RecommendMapper.java

@@ -0,0 +1,26 @@
+package cn.efunbox.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import cn.efunbox.model.Recommend;;
+
+public interface RecommendMapper {
+    /**
+     * 插入一条记录
+     * @param person
+     */
+    void insert(Recommend recmd);
+    
+    /**
+     * 查询所有
+     * @return
+     */
+    List<Recommend> queryAll();
+
+    /**
+     * 搜索
+     * @return
+     */
+	List<Recommend> search(int age, int sex, int limit, int offset);
+}

+ 15 - 0
src/main/java/cn/efunbox/mapping/ClickMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.efunbox.dao.ClickMapper">
+    <!-- 查询所有结果 -->  
+    <insert id="insert" parameterType="map">
+		insert into efunbox_click(age,sex,film_code,film_type,mark_type,is_vip,film_grade,film_star,age_group,series_count,publish_date,online_date,area,movie_type,target_people,language,duration,created) 
+		values(#{click.age},#{click.sex},#{click.film_code},#{click.film_type},#{click.mark_type},#{click.is_vip},#{click.film_grade},#{click.film_star},#{click.age_group},#{click.series_count},#{click.publish_date},#{click.online_data},#{click.area},#{click.movie_type},#{click.target_people},#{click.language},#{click.duration},#{click.created}) 
+	</insert>
+    
+    <!-- 查询所有结果 -->  
+    <select id="queryAll" resultType="Click" >  
+        select * from efunbox_click 
+    </select>
+    
+</mapper>

+ 8 - 0
src/main/java/cn/efunbox/mapping/PersonMapper.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.efunbox.dao.PersonMapper">
+    <!-- 查询所有person -->  
+    <select id="queryAll" resultType="Person" >  
+        select * from person  
+    </select>
+</mapper>

+ 15 - 0
src/main/java/cn/efunbox/mapping/RecommendMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.efunbox.dao.RecommendMapper">
+    <!-- 查询所有结果 -->  
+    <select id="queryAll" resultType="Recommend" >  
+        select * from efunbox_recmd  
+    </select>
+    
+    <!-- 搜索 -->  
+    <select id="search" parameterType="map" resultType="Recommend" >  
+        select * from efunbox_recmd 
+        where age=#{param1} and sex=#{param2} 
+		order by score desc limit #{param3} offset #{param4}
+    </select>
+</mapper>

+ 318 - 0
src/main/java/cn/efunbox/model/Click.java

@@ -0,0 +1,318 @@
+package cn.efunbox.model;
+
+
+/**
+ * 用户点击记录
+ * @author yaobo
+ *
+ */
+public class Click {
+
+	private int id;			//唯一编号
+    private int age;		//年龄:1-99
+    private int sex;		//性别:1为男,2为女
+    private String film_code;//电影编号
+    private int film_type;	//电影类型 1、电影 2:剧集
+    private int mark_type;	//角标类型 1:new
+    private int is_vip;		//是否为vip 1:是
+    private Float film_grade;//电影评分
+    private Float film_star;//电影评星
+    private int age_group;	//适用年龄段
+    private int series_count;//集数,电影为1
+    private int publish_date;//发行时间
+    private int online_date;//上线时间
+    private int area;		//地区
+    private int movie_type;	//类型
+    private int target_people;//适合人群
+    private int language;	//语言
+    private int duration;	//电影时长,分钟
+    private int created;	//创建时间
+    
+    /*
+     CREATE TABLE `efunbox_click` (
+                  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '唯一编号',
+                  `age` int(5) DEFAULT '5' COMMENT '年龄:1-99',
+                  `sex` int(2) DEFAULT '1' COMMENT '性别:1为男,2为女',
+                  `film_code` varchar(100) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '电影编号',
+                  `times` int(10) DEFAULT '1' COMMENT '点击次数',
+                  `score` int(10) DEFAULT '1' COMMENT '排序得分',
+                  `status` int(5) DEFAULT '1' COMMENT '是否显示:1为显示,-1为隐藏',
+                  `updated` int(10) DEFAULT '0' COMMENT '上次更新排序时间',
+                  `created` int(10) DEFAULT '0' COMMENT '创建时间',
+                  PRIMARY KEY (`id`),
+                  KEY `age_sex` (`age`,`sex`),
+                  KEY `score` (`score`)
+                ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='推荐节目统计结果'; 
+     */
+
+	/**
+	 * @return the id
+	 */
+	public int getId() {
+		return id;
+	}
+
+	/**
+	 * @param id the id to set
+	 */
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	/**
+	 * @return the age
+	 */
+	public int getAge() {
+		return age;
+	}
+
+	/**
+	 * @param age the age to set
+	 */
+	public void setAge(int age) {
+		this.age = age;
+	}
+
+	/**
+	 * @return the sex
+	 */
+	public int getSex() {
+		return sex;
+	}
+
+	/**
+	 * @param sex the sex to set
+	 */
+	public void setSex(int sex) {
+		this.sex = sex;
+	}
+
+	/**
+	 * @return the film_code
+	 */
+	public String getFilm_code() {
+		return film_code;
+	}
+
+	/**
+	 * @param film_code the film_code to set
+	 */
+	public void setFilm_code(String film_code) {
+		this.film_code = film_code;
+	}
+
+	/**
+	 * @return the film_type
+	 */
+	public int getFilm_type() {
+		return film_type;
+	}
+
+	/**
+	 * @param film_type the film_type to set
+	 */
+	public void setFilm_type(int film_type) {
+		this.film_type = film_type;
+	}
+
+	/**
+	 * @return the mark_type
+	 */
+	public int getMark_type() {
+		return mark_type;
+	}
+
+	/**
+	 * @param mark_type the mark_type to set
+	 */
+	public void setMark_type(int mark_type) {
+		this.mark_type = mark_type;
+	}
+
+	/**
+	 * @return the is_vip
+	 */
+	public int getIs_vip() {
+		return is_vip;
+	}
+
+	/**
+	 * @param is_vip the is_vip to set
+	 */
+	public void setIs_vip(int is_vip) {
+		this.is_vip = is_vip;
+	}
+
+	/**
+	 * @return the film_grade
+	 */
+	public Float getFilm_grade() {
+		return film_grade;
+	}
+
+	/**
+	 * @param film_grade the film_grade to set
+	 */
+	public void setFilm_grade(Float film_grade) {
+		this.film_grade = film_grade;
+	}
+
+	/**
+	 * @return the film_star
+	 */
+	public Float getFilm_star() {
+		return film_star;
+	}
+
+	/**
+	 * @param film_star the film_star to set
+	 */
+	public void setFilm_star(Float film_star) {
+		this.film_star = film_star;
+	}
+
+	/**
+	 * @return the age_group
+	 */
+	public int getAge_group() {
+		return age_group;
+	}
+
+	/**
+	 * @param age_group the age_group to set
+	 */
+	public void setAge_group(int age_group) {
+		this.age_group = age_group;
+	}
+
+	/**
+	 * @return the series_count
+	 */
+	public int getSeries_count() {
+		return series_count;
+	}
+
+	/**
+	 * @param series_count the series_count to set
+	 */
+	public void setSeries_count(int series_count) {
+		this.series_count = series_count;
+	}
+
+	/**
+	 * @return the publish_date
+	 */
+	public int getPublish_date() {
+		return publish_date;
+	}
+
+	/**
+	 * @param publish_date the publish_date to set
+	 */
+	public void setPublish_date(int publish_date) {
+		this.publish_date = publish_date;
+	}
+
+	/**
+	 * @return the online_date
+	 */
+	public int getonline_date() {
+		return online_date;
+	}
+
+	/**
+	 * @param online_date the online_date to set
+	 */
+	public void setonline_date(int online_date) {
+		this.online_date = online_date;
+	}
+
+	/**
+	 * @return the area
+	 */
+	public int getArea() {
+		return area;
+	}
+
+	/**
+	 * @param area the area to set
+	 */
+	public void setArea(int area) {
+		this.area = area;
+	}
+
+	/**
+	 * @return the movie_type
+	 */
+	public int getMovie_type() {
+		return movie_type;
+	}
+
+	/**
+	 * @param movie_type the movie_type to set
+	 */
+	public void setMovie_type(int movie_type) {
+		this.movie_type = movie_type;
+	}
+
+	/**
+	 * @return the target_people
+	 */
+	public int getTarget_people() {
+		return target_people;
+	}
+
+	/**
+	 * @param target_people the target_people to set
+	 */
+	public void setTarget_people(int target_people) {
+		this.target_people = target_people;
+	}
+
+	/**
+	 * @return the language
+	 */
+	public int getLanguage() {
+		return language;
+	}
+
+	/**
+	 * @param language the language to set
+	 */
+	public void setLanguage(int language) {
+		this.language = language;
+	}
+
+	/**
+	 * @return the duration
+	 */
+	public int getDuration() {
+		return duration;
+	}
+
+	/**
+	 * @param duration the duration to set
+	 */
+	public void setDuration(int duration) {
+		this.duration = duration;
+	}
+
+	/**
+	 * @return the created
+	 */
+	public int getCreated() {
+		return created;
+	}
+
+	/**
+	 * @param created the created to set
+	 */
+	public void setCreated(int created) {
+		this.created = created;
+	}
+
+    @Override
+    public String toString() {
+        return "Person [id=" + id + ", film_code=" + film_code + "]";
+    }
+}

+ 37 - 0
src/main/java/cn/efunbox/model/Person.java

@@ -0,0 +1,37 @@
+package cn.efunbox.model;
+
+/**
+ * person 实体
+ * @author yaobo
+ *
+ */
+public class Person {
+
+    private int id;
+    private String name;
+    private int age;
+    
+    public int getId() {
+        return id;
+    }
+    public void setId(int id) {
+        this.id = id;
+    }
+    public String getName() {
+        return name;
+    }
+    public void setName(String name) {
+        this.name = name;
+    }
+    public int getAge() {
+        return age;
+    }
+    public void setAge(int age) {
+        this.age = age;
+    }
+    
+    @Override
+    public String toString() {
+        return "Person [id=" + id + ", name=" + name + "]";
+    }
+}

+ 188 - 0
src/main/java/cn/efunbox/model/Recommend.java

@@ -0,0 +1,188 @@
+package cn.efunbox.model;
+
+import java.sql.Date;
+
+/**
+ * 推荐结果
+ * @author yaobo
+ *
+ */
+public class Recommend {
+
+	private int id;			//唯一编号
+    private int age;		//年龄:1-99
+    private int sex;		//性别:1为男,2为女
+    private String film_code;//电影编号
+    private int times;		//点击次数
+    private int score;		//排序得分
+    private int status;		//是否显示:1为显示,-1为隐藏
+    private int updated;	//上次更新排序时间
+    private int created;	//创建时间
+    
+    /*
+     CREATE TABLE `efunbox_recmd` (
+                  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '唯一编号',
+                  `age` int(5) DEFAULT '5' COMMENT '年龄:1-99',
+                  `sex` int(2) DEFAULT '1' COMMENT '性别:1为男,2为女',
+                  `film_code` varchar(100) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '电影编号',
+                  `times` int(10) DEFAULT '1' COMMENT '点击次数',
+                  `score` int(10) DEFAULT '1' COMMENT '排序得分',
+                  `status` int(5) DEFAULT '1' COMMENT '是否显示:1为显示,-1为隐藏',
+                  `updated` int(10) DEFAULT '0' COMMENT '上次更新排序时间',
+                  `created` int(10) DEFAULT '0' COMMENT '创建时间',
+                  PRIMARY KEY (`id`),
+                  KEY `age_sex` (`age`,`sex`),
+                  KEY `score` (`score`)
+                ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='推荐节目统计结果'; 
+     */
+    
+    /**
+	 * @return the id
+	 */
+	public int getId() {
+		return id;
+	}
+
+
+	/**
+	 * @param id the id to set
+	 */
+	public void setId(int id) {
+		this.id = id;
+	}
+
+
+	/**
+	 * @return the age
+	 */
+	public int getAge() {
+		return age;
+	}
+
+
+	/**
+	 * @param age the age to set
+	 */
+	public void setAge(int age) {
+		this.age = age;
+	}
+
+
+	/**
+	 * @return the sex
+	 */
+	public int getSex() {
+		return sex;
+	}
+
+
+	/**
+	 * @param sex the sex to set
+	 */
+	public void setSex(int sex) {
+		this.sex = sex;
+	}
+
+
+	/**
+	 * @return the film_code
+	 */
+	public String getFilm_code() {
+		return film_code;
+	}
+
+
+	/**
+	 * @param film_code the film_code to set
+	 */
+	public void setFilm_code(String film_code) {
+		this.film_code = film_code;
+	}
+
+
+	/**
+	 * @return the times
+	 */
+	public int getTimes() {
+		return times;
+	}
+
+
+	/**
+	 * @param times the times to set
+	 */
+	public void setTimes(int times) {
+		this.times = times;
+	}
+
+
+	/**
+	 * @return the score
+	 */
+	public int getScore() {
+		return score;
+	}
+
+
+	/**
+	 * @param score the score to set
+	 */
+	public void setScore(int score) {
+		this.score = score;
+	}
+
+
+	/**
+	 * @return the status
+	 */
+	public int getStatus() {
+		return status;
+	}
+
+
+	/**
+	 * @param status the status to set
+	 */
+	public void setStatus(int status) {
+		this.status = status;
+	}
+
+
+	/**
+	 * @return the updated
+	 */
+	public int getUpdated() {
+		return updated;
+	}
+
+
+	/**
+	 * @param updated the updated to set
+	 */
+	public void setUpdated(int updated) {
+		this.updated = updated;
+	}
+
+
+	/**
+	 * @return the created
+	 */
+	public int getCreated() {
+		return created;
+	}
+
+
+	/**
+	 * @param created the created to set
+	 */
+	public void setCreated(int created) {
+		this.created = created;
+	}
+
+
+    
+    @Override
+    public String toString() {
+        return "Person [id=" + id + ", film_code=" + film_code + "]";
+    }
+}

+ 21 - 0
src/main/java/cn/efunbox/service/IClickService.java

@@ -0,0 +1,21 @@
+package cn.efunbox.service;
+
+import java.util.List;
+
+import cn.efunbox.model.Click;
+
+public interface IClickService {
+
+    /**
+     * 新增记录
+     * @return
+     */
+    int insert(Click click);
+
+    /**
+     * 加载全部
+     * @return
+     */
+    List<Click> loadAll();
+
+}

+ 14 - 0
src/main/java/cn/efunbox/service/IPersonService.java

@@ -0,0 +1,14 @@
+package cn.efunbox.service;
+
+import java.util.List;
+
+import cn.efunbox.model.Person;
+
+public interface IPersonService {
+
+    /**
+     * 加载全部的person
+     * @return
+     */
+    List<Person> loadPersons();
+}

+ 20 - 0
src/main/java/cn/efunbox/service/IRecommendService.java

@@ -0,0 +1,20 @@
+package cn.efunbox.service;
+
+import java.util.List;
+
+import cn.efunbox.model.Recommend;;
+
+public interface IRecommendService {
+
+    /**
+     * 加载全部
+     * @return
+     */
+    List<Recommend> loadAll();
+
+    /**
+     * 搜索特定年龄、性别的推荐节目
+     * @return
+     */
+    List<Recommend> search(int age, int sex, int limit, int offset);
+}

+ 36 - 0
src/main/java/cn/efunbox/service/impl/ClickServiceImpl.java

@@ -0,0 +1,36 @@
+package cn.efunbox.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import cn.efunbox.model.Click;
+import cn.efunbox.dao.ClickMapper;
+import cn.efunbox.service.IClickService;
+
+@Service("clickService")
+public class ClickServiceImpl implements IClickService {
+    
+    private ClickMapper clickMapper;
+
+    public ClickMapper getPersonMapper() {
+        return clickMapper;
+    }
+    
+    @Autowired
+    public void setPersonMapper(ClickMapper clickMapper) {
+        this.clickMapper = clickMapper;
+    }
+
+	public List<Click> loadAll() {
+		// TODO Auto-generated method stub
+		return clickMapper.queryAll();
+	}
+
+	public int insert(Click click) {
+		// TODO Auto-generated method stub
+		return clickMapper.insert(click);
+	}
+
+}

+ 30 - 0
src/main/java/cn/efunbox/service/impl/PersonServiceImpl.java

@@ -0,0 +1,30 @@
+package cn.efunbox.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import cn.efunbox.model.Person;
+import cn.efunbox.dao.PersonMapper;
+import cn.efunbox.service.IPersonService;;
+
+@Service("personService")
+public class PersonServiceImpl implements IPersonService {
+    
+    private PersonMapper personMapper;
+
+    public PersonMapper getPersonMapper() {
+        return personMapper;
+    }
+    
+    @Autowired
+    public void setPersonMapper(PersonMapper personMapper) {
+        this.personMapper = personMapper;
+    }
+
+    public List<Person> loadPersons() {
+        return personMapper.queryAll();
+    }
+    
+}

+ 37 - 0
src/main/java/cn/efunbox/service/impl/RecommendServiceImpl.java

@@ -0,0 +1,37 @@
+package cn.efunbox.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import cn.efunbox.model.Recommend;
+import cn.efunbox.dao.RecommendMapper;
+import cn.efunbox.service.IRecommendService;;;
+
+@Service("recommendService")
+public class RecommendServiceImpl implements IRecommendService {
+    
+    private RecommendMapper recmdMapper;
+
+    public RecommendMapper getPersonMapper() {
+        return recmdMapper;
+    }
+    
+    @Autowired
+    public void setPersonMapper(RecommendMapper recmdMapper) {
+        this.recmdMapper = recmdMapper;
+    }
+
+	public List<Recommend> loadAll() {
+		// TODO Auto-generated method stub
+		return recmdMapper.queryAll();
+	}
+
+	public List<Recommend> search(int age, int sex, int limit, int offset) {
+		// TODO Auto-generated method stub
+		return recmdMapper.search(age, sex, limit, offset);
+	}
+
+    
+}

+ 13 - 0
src/main/resources/log4j.properties

@@ -0,0 +1,13 @@
+log4j.rootLogger=DEBUG, console,file
+
+log4j.logger.org.mybatis=DEBUG
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=console info: %5p %d %C\: %m%n
+
+log4j.appender.file=org.apache.log4j.RollingFileAppender   
+log4j.appender.file.File=/Users/yao/develop/tomcat-apache-8.5.5/webapps/logs/log.txt   
+log4j.appender.file.MaxFileSize=90KB  
+log4j.appender.file.layout=org.apache.log4j.PatternLayout   
+log4j.appender.file.layout.ConversionPattern=file info: %p----%d{yyyy-MM-dd HH\:mm\:ss} %C  %m%n   

+ 18 - 0
src/main/resources/mybatis-config.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE configuration  
+  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
+  "http://mybatis.org/dtd/mybatis-3-config.dtd">  
+      
+<configuration>  
+    <!-- 全局别名设置,在映射文件中只需写别名,而不必写出整个类路径  -->  
+    <typeAliases>    
+         <typeAlias type="cn.efunbox.model.Person" alias="Person"/>  
+         <typeAlias type="cn.efunbox.model.Recommend" alias="Recommend"/> 
+         <typeAlias type="cn.efunbox.model.Click" alias="Click"/>  
+    </typeAliases>     
+      <mappers>  
+        <mapper resource="cn/efunbox/mapping/PersonMapper.xml" />  
+        <mapper resource="cn/efunbox/mapping/RecommendMapper.xml" />  
+        <mapper resource="cn/efunbox/mapping/ClickMapper.xml" />  
+    </mappers>
+</configuration>

+ 63 - 0
src/main/resources/mybatis-spring.xml

@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
+    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
+     http://www.springframework.org/schema/beans/spring-beans.xsd
+     http://www.springframework.org/schema/context
+     http://www.springframework.org/schema/context/spring-context.xsd
+     http://www.springframework.org/schema/aop
+     http://www.springframework.org/schema/aop/spring-aop.xsd
+     http://www.springframework.org/schema/tx 
+     http://www.springframework.org/schema/tx/spring-tx.xsd">
+
+    <!-- 配置数据源 -->
+    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
+        <!-- 基本属性 url、user、password -->  
+        <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
+        <property name="url" value="jdbc:mysql://127.0.0.1:3306/efunbox_recmd" />  
+        <property name="username" value="root" />  
+        <property name="password" value="223732" />  
+        <property name="initialSize" value="1" />  
+        <property name="minIdle" value="1" />   
+        <property name="maxActive" value="20" />  
+        <property name="maxWait" value="60000" />
+        <!-- 超过时间限制是否回收 -->
+        <property name="removeAbandoned" value="true" />
+        <!-- 超过时间限制多长; -->
+        <property name="removeAbandonedTimeout" value="180" />
+        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
+        <property name="timeBetweenEvictionRunsMillis" value="60000" />
+        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
+        <property name="minEvictableIdleTimeMillis" value="300000" />
+        <!-- 用来检测连接是否有效的sql,要求是一个查询语句-->
+        <property name="validationQuery" value="SELECT 1" />
+        <!-- 申请连接的时候检测 -->
+        <property name="testWhileIdle" value="true" />
+        <!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 -->
+        <property name="testOnBorrow" value="false" />
+        <!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能  -->
+        <property name="testOnReturn" value="false" />
+    </bean>
+
+    <!-- Mybatis文件 -->
+    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
+        <property name="configLocation" value="classpath:mybatis-config.xml" /> 
+        <property name="dataSource" ref="dataSource" />
+        <!-- 映射文件路径 -->
+        <!--  <property name="mapperLocations" value="cn/efunbox/mapping/*.xml" />-->
+    </bean>
+
+    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
+        <property name="basePackage" value="cn.efunbox.dao" />
+        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
+    </bean>
+
+    <!-- 事务管理器 -->
+    <bean id="transactionManager"
+        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
+        <property name="dataSource" ref="dataSource" />
+    </bean>
+    
+    <tx:annotation-driven transaction-manager="transactionManager" />
+</beans>

+ 16 - 0
src/main/resources/mysqldb.properties

@@ -0,0 +1,16 @@
+jdbc.driverClassName=com.mysql.jdbc.Driver
+jdbc.url=jdbc:mysql://192.168.1.100:3306/mybatis
+jdbc.username=root
+jdbc.password=root
+jdbc.initialSize=1
+jdbc.minIdle=1
+jdbc.maxActive=20
+jdbc.maxWait=60000
+jdbc.removeAbandoned=true
+jdbc.removeAbandonedTimeout=180
+jdbc.timeBetweenEvictionRunsMillis=60000
+jdbc.minEvictableIdleTimeMillis=300000
+jdbc.validationQuery=SELECT 1
+jdbc.testWhileIdle=true
+jdbc.testOnBorrow=false
+jdbc.testOnReturn=false

+ 30 - 0
src/main/resources/spring-mvc.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+    xmlns:context="http://www.springframework.org/schema/context"
+    xmlns:mvc="http://www.springframework.org/schema/mvc"
+    xsi:schemaLocation="  
+     http://www.springframework.org/schema/beans   
+     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
+     http://www.springframework.org/schema/context  
+     http://www.springframework.org/schema/context/spring-context-3.0.xsd  
+     http://www.springframework.org/schema/mvc  
+     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
+     ">
+     <!-- 支持返回json数据 注解 -->
+ 	<mvc:annotation-driven />
+    
+    <!-- 启用spring mvc 注解 -->
+    <context:annotation-config />
+    
+    <!-- 设置使用注解的类所在的jar包 -->
+    <context:component-scan base-package="cn.efunbox.controller" />
+
+    <!-- 完成请求和注解POJO的映射 -->
+    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
+
+    <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
+	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
+        p:prefix="/WEB-INF/views/" p:suffix=".jsp" />
+
+</beans>

+ 24 - 0
src/main/resources/spring.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
+    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
+     http://www.springframework.org/schema/beans/spring-beans.xsd
+     http://www.springframework.org/schema/context
+     http://www.springframework.org/schema/context/spring-context.xsd
+     http://www.springframework.org/schema/aop
+     http://www.springframework.org/schema/aop/spring-aop.xsd
+     http://www.springframework.org/schema/tx 
+     http://www.springframework.org/schema/tx/spring-tx.xsd">
+
+    <!-- 自动注入 -->
+    <context:component-scan base-package="cn.efunbox.service.impl" />
+    <!-- 加载properties文件  -->
+    <!--  <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
+        <property name="locations">
+            <list>
+                <value>classpath:mysqldb.properties</value>
+            </list>
+        </property>
+    </bean> -->
+</beans>

+ 3 - 0
src/main/webapp/META-INF/MANIFEST.MF

@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/controller/ClickController.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/controller/PersonController.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/controller/RecommendController.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/dao/ClickMapper.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/dao/PersonMapper.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/dao/RecommendMapper.class


+ 15 - 0
src/main/webapp/WEB-INF/classes/cn/efunbox/mapping/ClickMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.efunbox.dao.ClickMapper">
+    <!-- 查询所有结果 -->  
+    <insert id="insert" parameterType="map">
+		insert into efunbox_click(age,sex,film_code,film_type,mark_type,is_vip,film_grade,film_star,age_group,series_count,publish_date,online_date,area,movie_type,target_people,language,duration,created) 
+		values(#{click.age},#{click.sex},#{click.film_code},#{click.film_type},#{click.mark_type},#{click.is_vip},#{click.film_grade},#{click.film_star},#{click.age_group},#{click.series_count},#{click.publish_date},#{click.online_data},#{click.area},#{click.movie_type},#{click.target_people},#{click.language},#{click.duration},#{click.created}) 
+	</insert>
+    
+    <!-- 查询所有结果 -->  
+    <select id="queryAll" resultType="Click" >  
+        select * from efunbox_click 
+    </select>
+    
+</mapper>

+ 8 - 0
src/main/webapp/WEB-INF/classes/cn/efunbox/mapping/PersonMapper.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.efunbox.dao.PersonMapper">
+    <!-- 查询所有person -->  
+    <select id="queryAll" resultType="Person" >  
+        select * from person  
+    </select>
+</mapper>

+ 15 - 0
src/main/webapp/WEB-INF/classes/cn/efunbox/mapping/RecommendMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.efunbox.dao.RecommendMapper">
+    <!-- 查询所有结果 -->  
+    <select id="queryAll" resultType="Recommend" >  
+        select * from efunbox_recmd  
+    </select>
+    
+    <!-- 搜索 -->  
+    <select id="search" parameterType="map" resultType="Recommend" >  
+        select * from efunbox_recmd 
+        where age=#{param1} and sex=#{param2} 
+		order by score desc limit #{param3} offset #{param4}
+    </select>
+</mapper>

BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/model/Click.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/model/Person.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/model/Recommend.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/service/IClickService.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/service/IPersonService.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/service/IRecommendService.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/service/impl/ClickServiceImpl.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/service/impl/PersonServiceImpl.class


BIN
src/main/webapp/WEB-INF/classes/cn/efunbox/service/impl/RecommendServiceImpl.class


+ 24 - 0
src/main/webapp/WEB-INF/views/showRecmds.jsp

@@ -0,0 +1,24 @@
+<%@ page language="java" contentType="text/html; charset=utf-8"
+     pageEncoding="utf-8"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+    <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+        <title>recommends list</title>
+    </head>
+    <body>
+        <table>
+            <tr>
+                <th>记录id</th>
+                <th>节目id</th>
+            </tr>
+            <c:forEach items="${recmds}" var="recmd">
+                <tr>
+                    <td>${recmd.id }</td>
+                    <td>${recmd.film_code }</td>
+                </tr>
+            </c:forEach>
+        </table>
+    </body>
+</html>

+ 24 - 0
src/main/webapp/WEB-INF/views/showperson.jsp

@@ -0,0 +1,24 @@
+<%@ page language="java" contentType="text/html; charset=utf-8"
+     pageEncoding="utf-8"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+    <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+        <title>person list</title>
+    </head>
+    <body>
+        <table>
+            <tr>
+                <th>姓名</th>
+                <th>年龄</th>
+            </tr>
+            <c:forEach items="${persons}" var="person">
+                <tr>
+                    <td>${person.name }</td>
+                    <td>${person.age }</td>
+                </tr>
+            </c:forEach>
+        </table>
+    </body>
+</html>

+ 40 - 0
src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
+  <display-name>efunbox-recmd</display-name>
+  <filter>
+    <filter-name>characterEncodingFilter</filter-name>
+    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
+    <init-param>
+      <param-name>encoding</param-name>
+      <param-value>UTF-8</param-value>
+    </init-param>
+  </filter>
+  <filter-mapping>
+    <filter-name>characterEncodingFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+  <context-param>
+    <param-name>contextConfigLocation</param-name>
+    <param-value>classpath:spring.xml,classpath:mybatis-spring.xml</param-value>
+  </context-param>
+  <listener>
+    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+  </listener>
+  <servlet>
+    <servlet-name>springDispatcherServlet</servlet-name>
+    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+    <init-param>
+      <param-name>contextConfigLocation</param-name>
+      <param-value>classpath:spring-mvc.xml</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>springDispatcherServlet</servlet-name>
+    <url-pattern>/</url-pattern>
+  </servlet-mapping>
+  <welcome-file-list>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.jsp</welcome-file>
+  </welcome-file-list>
+</web-app>

+ 5 - 0
src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>