在做项目的时候,有一个需求是将数据库中的信息封装到实体类返回到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实战 · 用spring框架下的hibernatetemplate的get方法出现的问题

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

随机推荐

  1. echarts添加点击事件

    由于工作需要,需要用echarts 进行展示图表,却又个新的需求,要点击展示的地方,同时下面出现table展示内容 如图所示: 一开始找了好多博客,发现都不好用,大部分都是用到了 var ecConf ...

  2. 3.如何安装Apache Spark

    如何安装Apache Spark 1 Why Apache Spark 2 关于Apache Spark 3 如何安装Apache Spark 4 Apache Spark的工作原理 5 spark弹 ...

  3. ETL作业调度软件TASKCTL4.1集群部署

    熟悉TASKCTL4.1一段时间后,觉得它的调度逻辑什么的都还不错,但是感觉单机部署不太够用.想实现跨机调度作业,就要会TASKCTL的集群部署.下面就是我在网上找到的相关资料,非原创. 单机部署成功 ...

  4. 初学Python(二)——数组

    初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...

  5. ORACLE - 管理表空间和数据文件

    ORACLE表空间是一个逻辑分区,一个数据文件只能属于一个表空间,一个表空间可以拥有多个数据文件. 一般情况下,如果一个实例分配给多个应用使用,需要创建不同的表空间,每个用户使用自己的表空间. 一.表 ...

  6. nodeJS之crypto加密

    前面的话 加密模块提供了 HTTP 或 HTTPS 连接过程中封装安全凭证的方法.也提供了 OpenSSL 的哈希,hmac, 加密(cipher), 解密(decipher), 签名(sign) 和 ...

  7. 网站相关人员信息记录humans.txt

    前面的话 robots.txt文件告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取.而humans.txt文件则是为人类准备的,包含参加该网页设计和建立的相关人员的信息.本文将详细介绍humans.tx ...

  8. LNMP环境的安装

    一.LNMP的安装 1.准备工作 #清理已经安装包 rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd yum -y remove mys ...

  9. [补档]暑假集训D8总结

    %dalao 今天有两位大佬来讲课,meaty来讲了Catalan(本来说好的莫比乌斯反演呢),聪聪来讲Splay呢 至于听课笔记= =,没来得及记= = 不过好不想上树啊,上了树就下不来了 考试 仍 ...

  10. 【 js 基础 】【 源码学习 】backbone 源码阅读(二)

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(source-code-study)进行参考交流,有详细的源码注释,以及知识总结,同时 ...