SSM
今天内容安排
1:复习mybatis
2:复习springMVC
3:springMVC+spring+mybatis组合起来,搭建一个web应用开发的框架
4:用户管理系统,针对用户的CRUD操作,前后端交互
mybatis复习

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的时候,会执行


ssm综合应用

创建工程---环境整理
使用技术
SpringMVC+Spring + Mybatis
数据库:mysql
前端:Jquery EasyUI
配置文件的编写
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">

事务配置

spring-mvc配置文件

spring-mybatis配置文件

mybatis-config配置

web.xml


导入相关js

解决静态资源被拦截

查询用户列表
controller

定义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;
}
}
编写userservice

编写userMapper


效果

访问路径方法合并
之前进行页面跳转的时候,如果有多个页面,就需要有多个方法。
借助于requetMapping(占位符的方式,传递一些数据,达到页面跳转的目的)
/user/to/user-list
可以取出user-list 这个内容, 作为视图的名字。 /web-inf/views/ user-list.jsp

导出excel
controller的逻辑

spring提供的excel视图实现

自定义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");
// 创建Excel的sheet
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"));
}
}
定义视图对象到springmvc中

定义视图解析器(通过bean对象查找视图)
注意:在SpringMVC中,如果定义多个视图解析器,需要指定每个视图解析的顺序。

添加用户的实现
<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>
日期对象的自动转换

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

SSM的更多相关文章
- 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程
本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...
- springmvc 多数据源 SSM java redis shiro ehcache 头像裁剪
获取下载地址 QQ 313596790 A 调用摄像头拍照,自定义裁剪编辑头像 B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单; 技术:31359679 ...
- SSM项目搭建(提供源码)
1创建web动态项目,项目结构截图 2.配置日志文件 #\u5B9A\u4E49LOG\u8F93\u51FA\u7EA7\u522B log4j.rootLogger=INFO,Console,Fi ...
- activiti工作流的web流程设计器整合视频教程 SSM和独立部署
本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...
- activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署
本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】
使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...
- Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境【转】
项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建 ...
- java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化
一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...
- SSM整合(三):Spring4与Mybatis3与SpringMVC整合
源码下载 SSMDemo 上一节整合了Mybatis3与Spring4,接下来整合SpringMVC! 说明:整合SpringMVC必须是在web项目中,所以前期,新建的就是web项目! 本节全部采用 ...
- SSM整合(二):Spring4与Mybatis3整合
上一节测试好了Mybatis3,接下来整合Spring4! 一.添加spring上下文配置 在src/main/resources/目录下的spring新建spring上下文配置文件applicati ...
随机推荐
- Netty 5.0源码分析之综述
1. 前言 本系列主要是用于梳理Netty的架构流程,深入设计细节,重点关注Netty是如何实现它所声称的特性. (ps:本人水平有限,如有错误,请不吝指教 : )) 2. 什么是Netty Nett ...
- servlet笔记
开发servlet有三种方法: (1) 实现 Servlet接口 (2) 通过继承 GenericServlet (3) 通过继承 HttpServlet get提交和post提交的 ...
- 使用Gradle编译release apk报错:Please correct the above warnings first
在开发SDK的过程中,遇到了一个研发,使用了自己的SDK之后遇到了各种问题,于是我们自己帮忙接入. 所有代码都接入完成之后,准备export出一个release包,但是此时却报错: 此时出现了很多的w ...
- Tip of the Day
Did you know ... ? You can view all statements within the method where certain exceptions can be cau ...
- C#Winform实现自动更新
服务端: [WebMethod] public string GetNewService(string version) { //通过版本号进行比较 if (version == "v1.0 ...
- Android_AndroidStudio配置
IDE降低了程序编译的门槛, 让Android程序的编译和运行变得简单易操作. 但无论Eclipse还是Android Studio, IDE都不是非常智能和可靠的, 总会出大大小小的问题. 很多时候 ...
- jmeter对http协议中post请求接口测试
现在有很多的工具用于工作上的使用,在jmeter的开源工具当中的,提供了一个可以对http协议的post的请求上接口测试,用于实现接口测试的自动化测试,当然也可以使用自己写的工具. 进行打开jmet ...
- 各种文件的ContentType
CONTENT_TYPE = { 16 '.load': 'text/html', 17 '.123': 'application/vnd.lotus-1-2-3', 18 '.3ds': 'imag ...
- WinForm 进程和线程
进程: //进程用到的类Process,需要进行解析 using System.Diagnostics Process.Start("calc");//Process是非静态方法, ...
- action 耦合方式
//ActionContext 方式 package com.hanqi.action; import java.util.Map; import com.opensymphony.xwork2.Ac ...