发表于: 2018-04-21 15:37:13
1 547
day23
今天完成的事情:
终于在十二点前实现了ssm的增删改查,当然是非REST风格的,控制器代码如下。代码还有很多小瑕疵
@Controller
@RequestMapping(value = "/taskUser")
public class UserController {
Logger logger = LoggerFactory.getLogger(UserController.class);
@Resource
UserService userService; //这个名字要和刚才注入式给的一样,我猜。
//业务方法,只要是/day2hello.action的请求,都交由HelloAction的hello方法处理
@RequestMapping(value = "/add.action")
public String loginMethod(Model model, Person person) throws Exception{
System.out.println(""+person );
int i = userService.addPerson(person);
if(i==1){
model.addAttribute("message",person.getId());
return "success";
}
return "failure";
}
@RequestMapping(value = "/prepare_update.action")
public String prepareUpdate(Model model, Person person) throws Exception{
System.out.println(person);
Person person1 = userService.getPersonById(person.getId());
System.out.println("prepareUpdate() ———— 先得到该人员信息: "+person1);
model.addAttribute("person",person1);
return "prepareUpdate";
}
@RequestMapping(value = "/update.action")
public String update(Model model, Person person) throws Exception{
System.out.println(person);
int i = userService.updatePerson(person);
if(i==1) {
logger.info("--嘿,更新成功了哦--");
}else{
this.failure(model);
}
return "welcome";
}
@RequestMapping(value = "/getAll.action")
public String getAll(Model model) throws Exception{
List list = userService.getAll();
System.out.println("查询所有");
model.addAttribute("allUser",list);
return "list";
}
@RequestMapping(value = "/myerror")
public String failure(Model model) throws Exception{
logger.error("有操作发生了失败,请开发人员检测 !");
return "failure";
}
@RequestMapping(value = "/delete.action")
public String Delete(Model model,Person person) throws Exception{
int i = userService.deletePerson(person.getId());
if(i==1){
logger.info("--嘿,删除成功了--");
}else {
this.failure(model);
}
return "welcome";
}
}
注意到增删改如果操作成功会返回int值 1,所以就判断如果返回 1 代表成功,否则失败返回失败页面。
还有任务一的一个知识点:
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
select last_insert_id()
</selectKey>
在mybatis里加上这个可以返回主键,是返回给对象里的,直接get拿出来就好。
小课堂:
Spirng常用注解:
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法。通俗来说,被Controller标记的类就是一个控制器,这个类中的方法,就是相应的动作。
1、@controller 控制器(注入服务)
2、@service 服务(注入dao)
3、@repository dao(实现dao访问)
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
Information:java: Multiple encodings set for module chunk Springmvc1 "GBK" will be used by compiler
明天计划的事情:
虽然实现了功能,但是好多细节很不清楚,明天好好看看。
再有就是准备小课堂。
遇到的问题:
1.配置正确但是,出现乱码。
今天开始学着搭SSM,但是数据库环节又出了问题,就是总是插入的是乱码
我用String的一个方法核查发现果然是坑爹的GBK,所有的都设置了,怎么还是Gbk
我各种设置UTF-8的都设置了,这种莫名其妙的问题自从用来idea就层出不穷,我的设置都没问题,那大概就是idea设置的问题。那开始一点点排查吧,首先看到它提示的信息:
Information:java: Multiple encodings set for module chunk Springmvc1 "GBK" will be used by compiler
果然是Gbk在搞鬼,然后又不是的看到这个信息:
Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
去网上一顿查,才发现
我明明设置的1.8,它却总是报1.5,必有隐情,然后去.idea目录下看到了个compiler.xml,打开后发现果然有个1.5的设置,我设置回1.8后就好了,害的我耽误了这么就的时间,https://blog.csdn.net/duchao123duchao/article/details/71480106。这个网址上的3个方法都可以更改它的默认1.5的设置。先摘录如下:
终于不出乱码了。
2.启动Tomcat服务器时报错,加载db.properties资源文件失败。
报错信息:
org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/db.properties]
Maven项目,application-context.xml、db.properties文件均放置在src/main/resources目录下,Tomcat部署项目,src/main/resources目录下的配置文件默认位置为:{项目名}/WEB-INF/classes,而Spring却在项目根目录下寻找,肯定找不到,因此,配置时指定classpath目录下寻找即可。
解决方案如下:
<context:property-placeholder location="classpath:db.properties" />
附:我原来的配置方式
<!-- ignore-unresolvable:是否忽略解析不到的属性,如果不忽略,找不到将抛出异常 -->
<context:property-placeholder location="db.properties" />
收获:
从页面端操作数据库确实比自己写sql语句操作舒服。
评论