SSM

今天内容安排

1:复习mybatis

2:复习springMVC

3:springMVC+spring+mybatis组合起来,搭建一个web应用开发的框架

4:用户管理系统,针对用户的CRUD操作,前后端交互

 

  1. mybatis复习

 

  1. springmvc复习

spring-mvc

    web.xml配置DispatcherServlet

    {servlet-name}-servlet.xml(自己的配置文件)

        扫描包<context:component-scan base-package="cn.itcast.mvc.controller"/>

        注解驱动(配置了handlerMapping,HandlerAdatper)

            <mvc:annotation-driven/>

        视图解析器(org.springframework.web.servlet.view.InternalResourceViewResolver)

            前缀(prefix)

            后缀(suffix)

            返回视图的形式===前缀+实体名称+后缀

        需要文件上传--则配置文件上传代码

        如果有自定义拦截器,需要进行配置 <mvc:interceptors>

    注解的使用

        类的注解

            @Controller 表示当前类是一个Controller

            @RequestMapping(value="访问路径")

        方法的注解

            @RequestMapping(value="路径",method="限定请求方法",params="限定请求参数")

            @ResponseBody --- 表示返回的对象自动转换成json

            @ResponseStatus设置相应的状体码(了解)

        方法参数的注解

            @RequestBody --- 接受json格式数据 可以是集合,可以是单个对象

            @PathVariable()----接受路径中的占位符 /test/{itemid} 可以接受itemid

            @RequestParam(value="传递参数的key'",required=是否必须传递该参数,defaultValue:如果没有传递参数的默认值) 接受请求参数

            @CookieValue(value="cookieName") 可以直接从指定的cookie中获取数据

    一些对象的接受

        serlvet的内置对象(直接在方法中定义参数就可以获取到)

            request

            resposne

            session

        pojo对象

            直接定义该对象就可以使用

        集合

            重新去定义一个对象,把集合变成对象中的一个属性,在方法的参数上,书写这个对象

    拦截器

        1、实现HandlerInterceptor

        2、完成指定三个方法

            preHandle(前置方法,返回类型,boolean,true继续向后执行,false,结束执行

            后置方法:postHandle(执行完Handler之后)

            完成方法afterCompletion() 如果该类的preHandler返回是true的时候,会执行

web.xml配置DispatcherServlet

{servlet-name}-servlet.xml(自己的配置文件)

    扫描包<context:component-scan base-package="cn.itcast.mvc.controller"/>

    注解驱动(配置了handlerMapping,HandlerAdatper)

        <mvc:annotation-driven/>

    视图解析器(org.springframework.web.servlet.view.InternalResourceViewResolver)

        前缀(prefix)

        后缀(suffix)

        返回视图的形式===前缀+实体名称+后缀

    需要文件上传--则配置文件上传代码

    如果有自定义拦截器,需要进行配置 <mvc:interceptors>

注解的使用

    类的注解

        @Controller 表示当前类是一个Controller

        @RequestMapping(value="访问路径")

    方法的注解

        @RequestMapping(value="路径",method="限定请求方法",params="限定请求参数")

        @ResponseBody --- 表示返回的对象自动转换成json

        @ResponseStatus设置相应的状体码(了解)

    方法参数的注解

        @RequestBody --- 接受json格式数据 可以是集合,可以是单个对象

        @PathVariable()----接受路径中的占位符 /test/{itemid} 可以接受itemid

        @RequestParam(value="传递参数的key'",required=是否必须传递该参数,defaultValue:如果没有传递参数的默认值) 接受请求参数

        @CookieValue(value="cookieName") 可以直接从指定的cookie中获取数据

一些对象的接受

    serlvet的内置对象(直接在方法中定义参数就可以获取到)

        request

        resposne

        session

    pojo对象

        直接定义该对象就可以使用

    集合

        重新去定义一个对象,把集合变成对象中的一个属性,在方法的参数上,书写这个对象

拦截器

    1、实现HandlerInterceptor

    2、完成指定三个方法

        preHandle(前置方法,返回类型,boolean,true继续向后执行,false,结束执行

        后置方法:postHandle(执行完Handler之后)

        完成方法afterCompletion() 如果该类的preHandler返回是true的时候,会执行

  1. ssm综合应用

 

  1. 创建工程---环境整理

    1. 使用技术

SpringMVC+Spring + Mybatis

 

数据库:mysql

 

前端:Jquery EasyUI

 

  1. 配置文件的编写

    1. spring配置文件

 

约束:

 

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

 

 

 

  1. 事务配置

 

 

 

  1. spring-mvc配置文件

 

 

 

  1. spring-mybatis配置文件

 

 

 

  1. mybatis-config配置

 

 

  1. web.xml

 

 

 

  1. 导入相关js

 

  1. 解决静态资源被拦截

 

 

 

  1. 查询用户列表

    1. controller

 

  1. 定义EasyUIResult

作用:定义easyui中的分页信息的bean对象,或者vo对象

 

package cn.itcast.usermanage.pojo;

 

import java.util.List;

 

public class EasyUIResult<?> {

 

 

private Integer total;

private List<?> rows;

public Integer getTotal() {

return total;

}

public void setTotal(Integer total) {

this.total = total;

}

public List<?> getRows() {

return rows;

}

public void setRows(List<?> rows) {

this.rows = rows;

}

}

 

  1. 编写userservice

  1. 编写userMapper

 

  1. 效果

  1. 访问路径方法合并

 

之前进行页面跳转的时候,如果有多个页面,就需要有多个方法。

借助于requetMapping(占位符的方式,传递一些数据,达到页面跳转的目的)

/user/to/user-list

可以取出user-list 这个内容, 作为视图的名字。 /web-inf/views/ user-list.jsp

 

 

  1. 导出excel

 

  1. controller的逻辑

 

 

  1. spring提供的excel视图实现

 

 

 

  1. 自定义excel 视图

 

public class UserExcelView extends AbstractExcelView {

 

/**

* 以下完成视图的渲染

*/

@Override

protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook,

HttpServletRequest request, HttpServletResponse response) throws Exception {

 

// model对象中获取userList

@SuppressWarnings("unchecked")

List<User> userList = (List<User>) model.get("userList");

// 创建Excelsheet

HSSFSheet sheet = workbook.createSheet("会员列表");

 

// 创建标题行

HSSFRow header = sheet.createRow(0);

header.createCell(0).setCellValue("ID");

header.createCell(1).setCellValue("用户名");

header.createCell(2).setCellValue("姓名");

header.createCell(3).setCellValue("年龄");

header.createCell(4).setCellValue("性别");

header.createCell(5).setCellValue("出生日期");

header.createCell(6).setCellValue("创建时间");

header.createCell(7).setCellValue("更新时间");

 

// 填充数据

int rowNum = 1;

for (User user : userList) {

HSSFRow row = sheet.createRow(rowNum);

row.createCell(0).setCellValue(user.getId());

row.createCell(1).setCellValue(user.getUserName());

row.createCell(2).setCellValue(user.getName());

row.createCell(3).setCellValue(user.getAge());

String sexStr;

if (user.getSex() == 1) {

sexStr = "";

} else if (user.getSex() == 2) {

sexStr = "";

} else {

sexStr = "未知";

}

row.createCell(4).setCellValue(sexStr);

row.createCell(5).setCellValue(new DateTime(user.getBirthday()).toString(Constants.DATE));

row.createCell(6).setCellValue(new DateTime(user.getCreated()).toString(Constants.DATE_TIME));

row.createCell(7).setCellValue(new DateTime(user.getUpdated()).toString(Constants.DATE_TIME));

 

rowNum++;

}

 

// 设置相应头信息,以附件形式下载并且指定文件名

response.setHeader("Content-Disposition", "attachment;filename="

+ new String("会员列表.xls".getBytes(), "ISO-8859-1"));

}

 

}

 

 

  1. 定义视图对象到springmvc中

 

  1. 定义视图解析器(通过bean对象查找视图)

 

注意:在SpringMVC中,如果定义多个视图解析器,需要指定每个视图解析的顺序。

 

 

  1. 添加用户的实现

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id" keyColumn="id">

        INSERT INTO tb_user (

                id,

                user_name,

                password,

                name,

                age,

                sex,

                birthday,

                created,

                updated

            )VALUES(

                null,

                #{userName},

                #{password},

                #{name},

                #{age},

                #{sex},

                #{birthday},

                NOW(),

                NOW()

            );

    </insert>

  1. 日期对象的自动转换

 

 

  1. json转换的时候,忽略属性

 

使用 @JsonIgnore 完成某个属性忽略,不会转换成json。

 

 

posted @ 2017-01-10 22:58  beyondcj  阅读(469)  评论(0编辑  收藏  举报