springboot学习遇见的问题
问题1:springboot启动后访问controller404
原因:controller路径不对,springboot扫描controller默认扫启动类当前包及其子包。
例如:application类在包com.qk.demo下,controller在包com.qk.home下,这样默认是不会扫描com.qk.home下的controller.
解决1:将启动类放到代码包最外层
解决2:在启动上方添加@ComponentScan注解,此注解为指定扫描路径,例如:@ComponentScan(basePackages = {“com.qk.home.*”}) 多个不同的以逗号分割
问题2:配置前端页面自定义访问路径
原因:为了好区分,我们会将前端网页放到下面webapp下面,然而在controller层跳转页面不可能每次都输入绝对路径,这个时候我们就会配置一个默认路径了。
解决:在配置文件中配置
#路径,在webapp文件夹下新建文件夹WEB-INF,在往下建文件夹page
spring.mvc.view.prefix=/WEB-INF/page/
问题3:将一个对象赋值给另外一个对象,两个对象各不相关
原因:我们在写代码的时候偶尔会遇到将一个对象的所有数据赋值给另外一个相同的对象,
User u=new User();
u.setFId(1);
u.setCreateTime(new Date());
u.setAge(23)
我现在有一个新的对象,想要原来那个对象的值,但是我又不想去一个一个set添加,
错误写法一:
User u1=u;
错误写法二:
User u1=new User();
u1=u;
不管是第一种还是第二中写法,其实赋值的都是u这个对象的堆栈地址,而不是里面的参数,如果我在后面修改了u1,那么u也会随着改变
User u1=new User();
u1=u;
u1.SetAge(33);
System.out.println(u1.getAge());//打印:33
System.out.println(u.getAge());//打印:33
经过查找资料,正确的方法是使用BeanUtils工具类型
//将第一个实体赋值给第二个实体,两者关系是 newu extends oldu.
BeanUtils.copyProperties(oldu,newu);
注意事项1:在controller层中定义路由时,必须在前面加“/”
最近项目开发完成,放到服务器上进行全局测试,发现有些页面的jstl不生效,经过和其他jstl生效的页面做对比,发现是后台controller层设置路由时没有加“/”。
@RequestMapping(“/main”)
如果不加“/”,前端main.jsp是无法获取到user的数据的。