springmvc与struts2的区别
来源:互联网 发布:python 执行adb shell 编辑:程序博客网 时间:2024/04/30 01:37
springmvc与struts2的区别
1.机制:springmvc的入口是servlet,是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,而struts2是filter,是类级别的拦截,每次来了一个请求就创建一个action,然后调用seter与getter方法把request中的数据注入,struts2其实是setter与getter与request打交道
,这样导致了二者的机制不同
2.性能:springmvc比struts2快,springmvc是基于方法的设计,而struts2是基于类,
3.springmvc的验证也是亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@REsponseBOdy,然后直接返回响应文本即可
附上代码
@RequestMapping(method=RequestMethod.POST,value = "/login")
@AvoidDuplicateSubmission(remove=true)
@ResponseBody
public Map<String, String> login(Model model,HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, String> map = new HashMap<String, String>();
String UserName = request.getParameter("UserName");
String Password = request.getParameter("Password");
logger.info("UserName: " + UserName + ", Password: " + Password);
try {
TblPerson person = null;
if(null == UserName || null == Password){
map.put("failure","true");
map.put("msg", "用户名和密码不能为空!");
return map;
}
person = personService.findPersonByName(UserName);
String pw=Constants.encodePassword(Password);
if (null == person) {
map.put("failure","true");
map.put("msg", "登陆失败请确认用户名是否正确!");
}
else{
if(!person.getPassword().equals(pw)){
map.put("failure", "true");
map.put("msg", "登录失败请确密码是否正确!");
}
else {
request.getSession().setAttribute(Constants.USER_INFO_SESSION, person);
map.put("success", "true");
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
map.put("msg", basePath+"main.jsp");
person.setLastLoginTime(new Timestamp(System.currentTimeMillis()));
personService.updatePersonService(person);
TblPersonlog userlog = new TblPersonlog();
userlog.setUserName(UserName);
userlog.setIP(getRemortIP(request));
userlog.setLogMessage(UserName + " login success");
userlog.setAddTime(new Timestamp(System
.currentTimeMillis()));
personlogService.savePersonlogService(userlog);
}
}
} catch (Exception e) {
TblPersonlog userlog = new TblPersonlog();
userlog.setUserName(UserName);
userlog.setIP(getRemortIP(request));
userlog.setLogMessage(UserName + " login success");
userlog
.setAddTime(new Timestamp(System
.currentTimeMillis()));
personlogService.savePersonlogService(userlog);
map.put("failure","true");
map.put("msg", "登陆异常请稍后再试!");
}
logger.info("user: " + UserName + "login success!");
return map;
}
4.设计思想上,struts2更加符合oop(面向对象编程)的编程思想,spring更加谨慎,在servlet上扩展
5,intercepter的实现机制:struts以自己的interceptor机制,而springmvc用的是独立的aop方式,这样导致struts2的配置文件比spring mvc大,虽然struts2配置也能继承,所以理论来讲,springmvc更加简洁,开发效率spring mvc确实比struts2 高
- Struts2与SpringMVC的区别
- springMVC与struts2的区别
- springmvc与struts2的区别
- springMVC与struts2的区别
- SpringMVC与Struts2的区别
- SpringMvc与Struts2的区别
- Struts2与SpringMVC的区别
- springMVC 与 struts2的区别
- springMVC与struts2的区别
- SpringMVC与Struts2的区别
- springmvc与struts2的区别
- struts2与springMVC的区别
- springmvc与struts2的区别
- Springmvc与struts2的区别
- springMVC与struts2的区别:
- SpringMVC与Struts2的区别
- Struts2与SpringMVC的区别
- springmvc与struts2的区别
- poj 1740 一个博弈游戏
- 高等几何——变换群与几何学8
- Ubuntu下编译matlab eigen时: undefined reference to `engOpen'
- OGG的extract进程checkpoint时间点回到1988-01-01 00:00:00故障处理
- PRCI-1113 : Directory /u01/app/grid/11.2.0/gridhome does not exist
- springmvc与struts2的区别
- 0-1背包Big Event in HDU
- 关于SVN+sersync实时同步到远程服务器的思路
- 数据库(oracle)表解锁
- CF #278 div2 D Strip 线段树+优先队列
- poj3260 混合背包
- Junit4
- 导出、导入模块:《二 -- 针对【文件夹节点】》
- nyoj 21 三个水杯