struts和springmvc的区别和运行原理

时间:2022-08-28 00:15:16
● struts
○ 搭建过程
■ 加载web.xml 、
● 配置struts核心控制器
● 1:拦截 规定后缀请求
● 2:加载struts.xml(读取配置扫描注解)
○ 常用注解
● @action
○ 实例化action ,规定访问url
● result
○ 规定返回结果集配置
○ 传值方式
■ string
● 属性驱动(基于 成员/全局 变量传值)
● 前台: from表单中 的表单元素 name属性=“name” 拼接url ?创建
● 后台:私有化private 成员变量,与前台属性值 保持一致,并且提供get set方法
○ (由底层的request.getpremer()封装后接值)
■ 文件
● 属性驱动
● 前台:写file 标签 规定name属性值,from表单 规定enctype
● 后台:私有化private File img String fileName .提供getset方法
○ 后台接到 文件,和文件名称 然后调用io工具包,保存文件
● copyfile()复制文件
■ 日期
● 与字符串一样
● 前台name:值
● 后台:使用 Date变量进行接受
● 自动将字符串转为 Date类型
○ 如何返回数据
■ 普通页面
● return 页面,根据Result 注解 找到对应页面返回
■ json
● 后台:需要将数据 通过json工具包 转为json字符串
● 通过respnse输出对象 通过getwarie()对象进行返回到前台
○ 多例
■ action是多例的,在用户发起请求时,创建action实例在内存当中,
■ 可以通过 输出 this 关键字,得到的内存地址都不一致,证明是多个
■ 因为action 实用成员变量接受参数,所以,不能采用单利(在并发情况下会出现值覆盖问题!:可以通过request 获取参数的形式解决单例影响)
● springmvc
搭建过程
■ 1:web.xml配置 springmvc总控制器
● 1:拦截规定后缀url
● 2:解析加载spring-mvc.xml
○ 配置扫面注解方法 scan
○ 配置视图解析器ViewResolver(规定返回的文件夹 和 后缀)
○ 常用注解
■ @controller 实例化controller
■ @RequestMapping 规定 方法 类 的访问路径
● method=RequestMethod.GET 限制访问类型
○ 传值方式(基于方法传值)
■ 通过modelMap前后台传值 modelAndView
■ string
● 前台name = 后台属性
■ 文件
● 前台name属性
● 后台spring-.mvc.xml设置文件上传大小
● @RequestParam(value="img")MultipartFile img
● 由File类 转为MultipartFile 使用注解参数@RequestParam规定
● 文件转移方法:
● img.transferTo(new File("d:\\"+img.getOriginalFilename()));
■ 日期
● springmvc不能将字符串转为Date 需要注解 @DateTimeFormat(pattern="yyyy-MM-dd") 转换
 
如何返回数据
■ 普通页面
● 返回路径/页面位置 经过视图解析器 直接返回
■ 重定向
● return "redirect:/stu/toStuPage.do";
■ json
● @ResponseBody 将变量转为json字符串 并且输出到前台
○ 单例
■ 实例化controller之后,输出this后验证为:springmvc为单例模式