目录
1、springmvc对多视图的支持
2、SSM整合小案例
2.0、需求
2.1、使用eclipse,创建一个动态web工程并导入jar包
2.2、web.xml配置文件(入口)
2.3、springmvc.xml配置文件
2.4、bean.xml配置文件(相当于applicationContext.xml)
2.6、编写代码
2.7、springmvc文件上传
3、页面缓存
3.1、简单理解缓存原理
3.2、浅谈互联网架构
3.3、实现页面缓存
3.4、在SSM项目中使用Oscache
4、使用springmvc的其他视图
4.1、整合freemarker视图
5、拦截器
5.1、局部拦截器
5.2、全局拦截器
5.3、测试
5.4、拦截器应用:用户身份认证
6、springmvc整合Hibernate
回到顶部
1、springmvc对多视图的支持
(1)导入xml格式视图支持的jar包
注意:springmvc本身就支持xml格式,所以不用导入其他支持的jar包了。
(2)在springmvc.xml中配置支持多视图
com.itheima.domain.User
小结:通过以上配置,模拟了WebService对多视图的支持的功能。
(3)配置javabean,即在绑定的类User中加入对xml格式视图转换的注解:@XmlRootElement
(4)在web.xml中配置约定访问的url
springmvc
/rest/*
(5)定义Controller
// 多视图支持
// 返回的是对象,把返回的对象转换成json格式视图和xml格式的视图
@RequestMapping("multiView")
public User multiView() {
User user1 = new User();
user1.setId(1);
user1.setUsername("晓艺");
user1.setAge("26");
user1.setAddress("物资学院");
user1.setBirthday(new Date());
return user1;
}
(6)访问
根据官方文档约定:访问的时候需要加上响应的扩展名。
即:访问json格式的数据,需要加上json扩展名;访问html格式的数据,需要加上html的扩展名;访问xml格式的数据,需要加上xml的扩展名。
根据我们web.xml文件的访问约定:扩展名.do是访问jsp页面的。
我们约定rest目录下所有以json和xml扩展名都支持相应的视图。
我们访问json格式数据的访问形式如下:
我们访问xml格式数据的访问形式如下:
(7)
默认创建:注解处理器映射器、注解处理器适配器、并提供对json格式数据的支持。
在springmvc.xml中进行配置:
但是注意:此时javaBean不能添加注解@XmlRootElement了。@XmlRootElement表示提供对xml视图支持。
回到顶部
2、SSM整合小案例
2.0、需求
实现商品查询列表,从mysql数据库中查询商品信息。
2.1、使用eclipse,创建一个动态web工程并导入jar包
其中Dynamic web module version版本选择 2.5,这样兼容性好一些;
Default output folder设置为 WebRoot\WEB-INF\classes
Content directory设置为 WebRoot
更改JRE System Library[J2SE-1.5]为 JRE System Library[jre1.7.0_80]
删掉没用的库:EAR Libraries
增加服务器运行环境库 Server Runtime,不然jsp文件会报错。
创建完项目后,将整个项目的编码改为UTF-8。
操作步骤:选中项目右键 --> Properties --> Resource --> Text file encoding --> Other中选择UTF-8。
对于动态的java web项目,为了工程目录结构的清爽,我们将引入的jar包放到“Web App Libraries”中,可以通过“小三角”选择是否“Show 'Referenced Libraries' Node ”进行调节。
对于普通的java项目,为了工程目录结构的清爽,我们将引入的jar包放到“Referenced Libraries”中,可以通过“小三角”选择是否“Show 'Referenced Libraries' Node ”进行调节。
导入jar包
包括:spring(包括springmvc)、mybatis、mybatis-spring整合包、数据库驱动、第三方连接池、jstl、c3p0管理数据源、log4j、junit。
参考:“mybatis与springmvc整合全部jar包”目录。
本次案例共导入28个jar包。如下图所示:
2.2、web.xml配置文件(入口)
web.xml
day63_SpringMVC_01
characterEcoding
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
characterEcoding
/*
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
springmvc
*.do
springmvc
/rest/*
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:beans.xml
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
2.3、springmvc.xml配置文件
2.4、bean.xml配置文件(相当于applicationContext.xml)
bean.xml
2.6、编写代码
mapper层(dao层):
mapper接口代码使用Mybatis的逆向工程生成的。
service层:
ItemsService.java
public interface ItemsService {
public List
findAll();
public Items findById(Integer id);
public void saveOrUpdate(Items items);
public void deleteById(Integer id);
}
ItemsServiceImpl.java
@Service
public class ItemsServiceImpl implements ItemsService {
// 注入接口对象(Mapper接口使用代理类)
@Resource
private ItemsMapper itemsMapper;
public List findAll() {
List list = itemsMapper.findAll();
return list;
}
public Items findById(Integer id) {
Items items = itemsMapper.selectByPrimaryKey(id);
return items;
}
public void saveOrUpdate(Items items) {
itemsMapper.updateByPrimaryKey(items); // 商品id通过页面隐藏域传过来的
}
public void deleteById(Integer id) {
itemsMapper.deleteByPrimaryKey(id);
}
}
controller层(web层/Action层):
ItemsController.java
@Controller
@RequestMapping("/items")
public class ItemsController {
// 注入service对象
@Resource
private ItemsService itemsService;
// 查询所有商品方法
@RequestMapping("list")
// springmvc使用Model对象进行页面数据回显,Model对象相当于javaweb时所学的application对象(应用域对象),所以Model对象中的数据,在页面上可以通过EL表达式进行获取。
// 有了Model对象,才可以向对象中放值,那么Model对象该如何创建呢?
// 答:“由于springmvc中放到方法里面的对象会自动被创建”,那么我们就把Model对象放到方法里面。
public String list(Model model) {
List itemsList = itemsService.findAll();
model.addAttribute("itemsList", itemsList);
return "itemsList";
}
// 修改商品方法
@RequestMapping("editById")
public String editById(Integer i