在做项目的时候,有一个需求是将数据库中的信息封装到实体类返回到jsp界面

传过来的参数只是实体类的id属性,然后根据id属性去查数据库,事情就是这样,然后

结果遇到很奇怪的事情,在jsp页面中使用EL表达式取值,除了id字段,其他都是NULL

先记录结论:

分为两种情况

一:方法参数use的引用值(假设地址:0x0011)在Controller层使用中未发生改变

那么在这个方法中默认有一个req.setAttribute("类名首字母小写",use);

注意:默认意思这边你写不写这个绑定在jsp页面都是可以取值的, 绑定值是这边的参数引用,绑定名是:类名首字母小写

二:DispatcherServlet分析方法创建一个0x0011的对象赋给use, 方法在调用service层或者持久层时,因为接受调用的返回值而将use的引用值改变(假设改变为0x0022),那么有以下的结果
根据反复测试:在DispatcherServlet中有默认的req.setAttribute("类名首字母小写",use);
注意这边很关键:这边绑定的use的地址是0x0011(我大胆猜测是在DispatcherServlet中绑定的)
根据spring框架执行流程分析知道:即使你再在controller中绑定"类名首字母小写",这样的绑定名,也会到DispatcherServlet中被覆盖掉

我不知道讲的清不清晰,大家随便提问,笔者会用耐心去解释这样的结果,其次,如果有大牛能看懂spring源码给我点提示,就更好不过了

表现层中主要代码(其中lis是已经注入的Service)

@RequestMapping("/loginIn.do")

public String loginIn(User use, HttpServletRequest req) {

System.out.println(use);

System.out.println("userName:" + use.getUserName());

System.out.println("paddword:" + use.getPassword());

use = lis.toLoginIn(use);

System.out.println(use);

return "success";

}

Service层中主要代码

@Service("loginInService")

public class LoginInServiceImpl implements LoginInService {

@Resource(name="loginInDAO")

private LoginInDAO lid;

@Override

public User toLoginIn(User user) {

user = lid.loginIn(user);

return user;

}

}

持久层主要代码

@Repository("loginInDAO")

public class LoginInDAOImpl implements LoginInDAO {

@Override
public User loginIn(User user) {
user.setPassword("持久层");
return user;
}

}

实体类主要字段(get/set省)

public class User implements Serializable{

private static final long serialVersionUID = -5298720181994382985L;

private String userName;

private String password;

Spring框架Controller层(表现层)针对方法参数是Bean时HttpServletRequest绑定参数值问题解释的更多相关文章

  1. (转)淘淘商城系列——SSM框架整合之表现层整合

    http://blog.csdn.net/yerenyuan_pku/article/details/72721120 上文我们一起学习了Service层的整合,本文将教大家如何整合表现层. 我们在t ...

  2. JSF Web框架与Facelets表现层技术

    JSF(JavaServer Faces) JSF应用程序的生命周期从客户端对页面发出HTTP请求时开始,并在服务器响应页面时结束.JSF生命周期分为运行阶段和渲染阶段两个主要阶段. 执行阶段 当第一 ...

  3. Spring框架详解介绍-基本使用方法

    1.Spring框架-控制反转(IOC) 2.Spring框架-面向切面编程(AOP) 3.Spring 内置的JdbcTemplate(Spring-JDBC) Spring框架-控制反转(IOC) ...

  4. Spring框架:Controller和RestController区别

    了解如何利用SpringMVC的注释创建RESTful Web服务. Spring的基于注释的MVC框架简化了创建RESTful Web服务的过程.传统的Spring MVC控制器和RESTful W ...

  5. 学习Spring框架等技术的方向、方法和动机

    学习Spring框架最早学习Spring框架是在大二的时候,当时看了几本书,看了一些视频,主要是传智播客的.更多的,还是写代码,单独写Spring的,也有与Struts和Hibernate等框架整合的 ...

  6. Spring(十三):使用工厂方法来配置Bean的两种方式(静态工厂方法&实例工厂方法)

    通过调用静态工厂方法创建Bean 1)调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中.当客户端需要对象时,只需要简单地调用静态方法,而不需要关心创建对象的具体细节. 2)要声明通过静态 ...

  7. 学习spring第6天(aop获取目标方法参数)

    关于<aop:around>中的方法,需要第一个参数为ProceedJoinPoint,在方法体中通过该参数调用proceed()才能使目标方法得到调用. 当一个切面中有多个<aop ...

  8. Spring MVC-学习笔记(2)DispatcherServlet、@Controller、@RequestMapping、处理方法参数类型、可返回类型、Model、ModelMap、ModelAndView

    1.前端控制器org.springframework.web.servlet.DispatcherServlet 所有的请求驱动都围绕这个DispatcherServlet来分派请求.springMV ...

  9. SSH实战 &#183; 用spring框架下的hibernatetemplate的get方法出现的问题

    用get方法查询:      return this.getHibernateTemplate().get(Product.class, pid); 出现错误为:id to load is requi ...

随机推荐

  1. linux 分区问题

    一.最简单的分区 仅分出根目录(/)和最简单的内存置换空间(swap)即可 以虚拟机的分区(20G)为例: 一般给/分15G来安装linux系统,512M给swap,另外的4G可以留下备用 二.复杂一 ...

  2. IOS-CoreAnimation

    核心动画 •Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! •使用它需要先添加QuartzCore.framework和引入对应的框架 ...

  3. session 实现保存用户信息

    index.jsp <body> <div style="margin: 0 auto; width: 500px; text-align: center;"&g ...

  4. nyoj 19擅长排列的小明 (DFS)

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...

  5. JVM知识学习与巩固

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. 我们运行和调 ...

  6. 对GBK的理解(内附全部字符编码列表):扩充的2万汉字低字节的高位不等于1,而且还剩许多编码空间没有利用

    各种编码查询表:http://bm.kdd.cc/ 由于GB 2312-80只收录6763个汉字,有不少汉字,如部分在GB 2312-80推出以后才简化的汉字(如“啰”),部分人名用字(如中国前总理朱 ...

  7. Mac OS X用户,使用homebrew安装,FreeBSD也可以

    qtkeychain 这是编译和运行软件必须的库.各平台都可以编译安装.对于Mac OS X用户,使用homebrew安装: brew install qt5keychain (旧版本的Mac OS ...

  8. Apple Swift学习资料汇总

    今年的苹果开发者大会(WWDC)上,公布了ios8的几个新特性,其中包括引入了群聊功能,支持第三方输入法等功能.但更让开发者感兴趣的莫过于Swift语言的发布了. Swift是apple自创的一门转为 ...

  9. [面经] 南京SAP面试(上)

    背景 博主乃985弱校的小硕一枚,在南京某外企工作了两年,如今的公司还不错,待遇还行,做的东西也比較有意思.在南京这个地方,给力的公司不太多,仅仅要是跟亲戚朋友聊到我在南京做IT,无一例外都会问&qu ...

  10. React学习系列

    React学习系列 系列学习react 翻译地址 https://scotch.io/tutorials/learning-react-getting-started-and-concepts 我是初 ...