天猫整站SSM项目(三)后台demo---数据查询(一)
天猫整站SSM项目(三)后台demo---数据查询(一
- 一、分类查询页面包含的jsp文件
- 二、查询功能的实现
到这里就开始讲解功能开发了。 开发整站的顺序,通常来说还是按照依赖性来进行,前端需要的数据,都要先通过后台的功能维护在数据库中,才可以拿到。所以,先进行后台功能的开发,然后再是前台功能的开发。
一、分类查询页面包含的jsp文件
分类查询对应的JSP文件是listCategory.jsp,该jsp文件由几个部分组成,为4个jsp文件
1、adminHeader.jsp
每个后台页面都在一开始使用了adminHeader.jsp,这是设置一些jsp的格式和预先定义好要调用的函数
2、adminNavigator.jsp
该页面是显示后台的导航栏的
3、adminPage.jsp
这是显示页面分页效果的jsp
4、adminFooter.jsp
这是页尾部分的显示jsp
二、查询功能的实现
1、新建项目tmall_ssm
2、在java目录下新建一个包com.how2java.tmall.pojo,并创建Category类.
Category类包含两个属性:id和name
public class Category {private Integer id;private String name;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 == null ? null : name.trim();}
}
3、创建一个mapper包,新建CategoryMapper接口,由于目前只做查询,就添加查询方法
public interface CategoryMapper {List<Category> list();}
4、创建service接口
public interface CategoryService {List<Category> list();
}
5、创建service接口的实现类
新建CategoryService接口的实现类CategoryServiceImpl
注解@Service声明当前类是一个Service类
通过自动装配@Autowired引入CategoryMapper ,在list方法中调用CategoryMapper 的list方法.
有时候 categoryMapper 会出现红色的下划线,原因不是代码出错了,而是idea的bug.
@Service
public class CategoryServiceImpl implements CategoryService{@AutowiredCategoryMapper categoryMapper;public List<Category> list() {return categoryMapper.list();}
}
6、新建controller包,创建CategoryController类
- 注解@Controller声明当前类是一个控制器
- 注解@RequestMapping("")表示访问的时候无需额外的地址
- 注解@Autowired把CategoryServiceImpl自动装配进了CategoryService 接口
- 注解@RequestMapping(“admin_category_list”) 映射admin_category_list路径的访问
- 在list方法中,通过categoryService.list()获取所有的Category对象,然后放在"cs"中,并服务端跳转到 “admin/listCategory” 视图。
- “admin/listCategory” 会根据后续的springMVC.xml 配置文件,跳转到 WEB-INF/jsp/admin/listCategory.jsp 文件
@Controller
@RequestMapping("")
public class CategoryController {@AutowiredCategoryService categoryService;@RequestMapping("admin_category_list")public String list(Model model){List<Category> cs = categoryService.list();model.addAttribute("cs",cs);return "admin/listCategory";}
}
7、在resource目录下新建mapper包,创建CategoryMapper.xml
CategoryMapper.xml的namespace必须是com.how2java.tmall.mapper.CategoryMapper,以和CategoryMapper保持一致。
这是因为:在mybatis中,mapper文件中的namespace是用于绑定Dao接口的,即面向接口编程。当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句CategoryMapper.xml声明了唯一的一条sql语句:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.how2java.tmall.mapper.CategoryMapper"><select id="list" resultType="Category">select * from category order by id desc</select>
</mapper>
8、在resource目录下创建log4j日文件log4j.properties
这个配置文件的作用是开启日志,当访问页面的时候,查看mybatis运行的情况,执行了什么SQL语句,以及sql语句的返回情况等信息。
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.how2java.tmall=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
9、在resource目录下创建jdbc.properties
这是数据库配置文件
#数据库配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/tmall_ssm?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456
10、在resources目录下新建applicationContext.xml
该文件就是spring的配置文件
<?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"xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><context:annotation-config /><context:component-scan base-package="com.how2java.tmall.service" /><!-- 导入数据库配置文件 --><context:property-placeholder location="classpath:jdbc.properties"/><!-- 配置数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><!-- 基本属性 url、user、password --><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><!-- 配置初始化大小、最小、最大 --><property name="initialSize" value="1" /><property name="minIdle" value="1" /><property name="maxActive" value="20" /><!-- 配置获取连接等待超时的时间 --><property name="maxWait" value="60000" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="60000" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="300000" /><property name="validationQuery" value="SELECT 1" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><!-- 打开PSCache,并且指定每个连接上PSCache的大小 --><property name="poolPreparedStatements" value="true" /><property name="maxPoolPreparedStatementPerConnectionSize"value="20" /></bean><!--Mybatis的SessionFactory配置--><bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="typeAliasesPackage" value="com.how2java.tmall.pojo" /><property name="dataSource" ref="dataSource"/><property name="mapperLocations" value="classpath:mapper/*.xml"/><!--分页插件,目前先注释,后面重构的时候才会使用<property name="plugins"><array><bean class="com.github.pagehelper.PageInterceptor"><property name="properties"><value></value></property></bean></array></property>--></bean><!--Mybatis的Mapper文件识别--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.how2java.tmall.mapper"/></bean></beans>
(1)启动对注解的识别,配置注解驱动,并且配置扫描包路径选项
spring扫描dao和service层,springmvc扫描controller层
如果在项目中我们在Service层做全局包扫描,那么springmvc不能提供服务,因为springmvc子容器中没有controller对象。所以spring只能做局部扫描,扫描service层
<context:annotation-config />
<context:component-scan base-package="com.how2java.tmall.service" />
(2)指定对jdbc.properties的引用
<context:property-placeholder location="classpath:jdbc.properties"/>
(3)配置数据源
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
(4)配置Mybatis的SessionFactory,其中声明了别名,并且使用前面配置的数据源,扫描CategoryMapper.xml配置文件
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
(5)扫描mybatis的Mapper类: CategoryMapper.xml
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
所以说mybatis的配置是写到了spring的配置文件中的
11、在source目录下建立springmvc.xml
配置springmvc
<?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: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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"><!--启动注解识别--><context:annotation-config/><context:component-scan base-package="com.how2java.tmall.controller"><context:include-filter type="annotation"expression="org.springframework.stereotype.Controller"/></context:component-scan><mvc:annotation-driven /><!--开通静态资源的访问--><mvc:default-servlet-handler /><!-- 视图定位 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean><!-- 对上传文件的解析--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
</beans>
(1)配置注解驱动和controller扫描
<context:annotation-config/> <context:component-scan base-package="com.how2java.tmall.controller"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <mvc:annotation-driven />
(2)开通静态资源的访问,否则访问图片,css,js等文件可能出错
因为是在controller中有可能跳转到静态资源
<mvc:default-servlet-handler />
(3)视图定位
跳转目录的前缀和后缀
<!-- 视图定位 -->
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" />
</bean>
(4)对上传文件的解析
12、修改web.xml
修改web.xml,主要提供如下功能:配置spring和springmvc
- 指定spring的配置文件为classpath下的applicationContext.xml
- 设置中文过滤器
- 指定spring mvc配置文件为classpath下的springMVC.xml
<?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"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"><!-- spring的配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--中文过滤器--><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><!-- spring mvc核心:分发servlet --><servlet><servlet-name>mvc-dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- spring mvc的配置文件 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springMVC.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>mvc-dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
13、静态资源
将所有的静态资源添加进来,css,images,js等
14、在web-inf目录创建listCategory.jsp
15、以上就完成了整个项目,接下来创建测试类创建数据,并启动tomcat测试。
16、程序执行的流程
- 首先浏览器上访问路径 /admin_category_list
- tomcat根据web.xml上的配置信息,拦截到了/admin_category_list,并将其交由DispatcherServlet处理。
- DispatcherServlet 根据springMVC的配置,将这次请求交由CategoryController类进行处理,所以需要进行这个类的实例化
- 在实例化CategoryController的时候,注入CategoryServiceImpl
- 在实例化CategoryServiceImpl的时候,又注入CategoryMapper
- 根据ApplicationContext.xml中的配置信息,将CategoryMapper和CategoryMapper.xml关联起来了。
- 这样就拿到了实例化好了的CategoryController,并调用list方法
- 在list方法中,访问CategoryService,并获取数据,并把数据放在"cs"上,接着服务端跳转到listCategory.jsp去
- 最后在listCategory.jsp 中显示数据
天猫整站SSM项目(三)后台demo---数据查询(一)相关推荐
- 天猫整站SSM项目(二)数据库设计
天猫整站SSM项目(二)数据库设计 一.数据库设计分析 二.创建数据库 1. 建立数据库 2. 表与表之间的关系 2.1 表![在这里插入图片描述](https://img-blog.csdnimg. ...
- 终于稀里糊涂完成了模仿天猫整站ssm
1.首先感谢How2J的SSM教程. 2.其次分享一下图片 3.互勉加油
- springboot+veu实战项目-天猫整站
目录 天猫整站 Springboot 一:技术准备 二:开发流程 三:本地演示 1 : 下载并运行 2 : 访问地址 3 : nginx 4 : nginx.conf 配置文件 5 : 启动nginx ...
- SpringBoot实战项目教程----springboot天猫整站
目录 一:技术准备 二:开发流程 三:本地演示 1 : 下载并运行 2 : 访问地址 3 : nginx 4 : nginx.conf 配置文件 5 : 启动nginx 6 : 访问测试 7 : 动静 ...
- springboot实战项目----天猫整站---how2j
目录 天猫整站 Springboot 一:技术准备 二:开发流程 三:本地演示 1 : 下载并运行 2 : 访问地址 3 : nginx 4 : nginx.conf 配置文件 5 : 启动nginx ...
- 天猫整站Springboot 从零开始搭建(二)
目录 1 技术准备 2 开发流程 2.1 需求分析 2.2.1 需求分析-展示 2.2.2 需求分析-交互 2.2.3 需求分析-后台 2.2 表结构设计 2.3 原型 2.4 后台-分类管理 2.4 ...
- 天猫整站SSM-后台分类管理-增加(做个人学习笔记整理用)
天猫整站SSM-后台分类管理-增加(做个人学习笔记整理用) CategoryController: request.getSession().getServletContext()// 获取的是pag ...
- 天猫整站SSM-分页-总结(做个人学习笔记整理用)
天猫整站SSM-分页-herf(做个人学习笔记整理用) 先写Page.java package com.how2java.tmall.util;public class Page {private i ...
- 天猫整站SSM-分页-herf(做个人学习笔记整理用)
天猫整站SSM-分页-(做个人学习笔记整理用) <li ><a href="?start=${page.start-page.count}" aria-label ...
最新文章
- 打造属于自己的underscore系列 ( 一 )
- 68-95-99规则–以普通英语解释正态分布
- 操作系统:小和尚打水+老和尚喝水经典同步问题实现 菜鸟的解题全过程(附具体代码)
- python冒泡排序_5种python方法实现冒泡排序可视化:Bubble Sort Visualizer
- python连接数据库示例(东西写得很详细,剽过来了)
- 在CentOS上安装FFMPEG和Gstream-ffmpeg
- mysql的从节点能否执行事务_MySQL执行事务的语法与流程详解
- ant引入html页面,antdesign 中 使用 iconfont symbol方式引入图标不展示
- scala 获取数组中元素_从Scala中的元素列表中获取随机元素
- 高效向前“零延迟” 数据中心IT自动化势在必行
- eclipse 字体设置 Courier New字
- oracle delphi唱盘,经典再升级 Oracle Delphi MK VI Gen 2
- asp .net 多文件上传(二)
- netty 5 心跳
- 计算学习理论PAC模型
- 做数据分析很重要的思维模式!!!
- android 多媒体列表,android – 使用Exoplayer的流媒体视频列表
- 基于ESP8266的STM32物联网开发板
- JavaWeb Ajax的使用
- 国米w ndows错误,欧冠国米1:2巴萨!球迷一席话揭球队输球真因,一语中的