发表于: 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的请求,都交由HelloActionhello方法处理
   @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语句操作舒服。

 

 

 

 



返回列表 返回列表
评论

    分享到