分类查询对应的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{
@Autowired
CategoryMapper categoryMapper;
public List<Category> list() {
return categoryMapper.list();
}
}
6、新建controller包,创建CategoryController类
@Controller
@RequestMapping("")
public class CategoryController {
@Autowired
CategoryService 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语句:
<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的配置文件
<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.xsd
http://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">
<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" />
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize"
value="20" />
bean>
<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"/>
bean>
<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
<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.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.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 />
<bean
class="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)视图定位
跳转目录的前缀和后缀
<bean
class="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
<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">
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:applicationContext.xmlparam-value>
context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
<filter>
<filter-name>CharacterEncodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>utf-8param-value>
init-param>
filter>
<filter-mapping>
<filter-name>CharacterEncodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<servlet>
<servlet-name>mvc-dispatcherservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:springMVC.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcherservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
web-app>
13、静态资源
将所有的静态资源添加进来,css,images,js等
14、在web-inf目录创建listCategory.jsp
15、以上就完成了整个项目,接下来创建测试类创建数据,并启动tomcat测试。
16、程序执行的流程