发表于: 2017-07-18 21:23:51
1 1371
一.今天完成的主要事情
.springmvc和mybatis的初步整合,并理解两个框架的大致执行流程
以下是web.xml代码.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>task-2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- ContextLoaderListener初始化的上下文中加载的Bean是对于整个应用程序共享的,它并不管程序使用什么样的表现层技术,所以一般是DAO层或者service层需要使用的对象;所以这里加载的的配置文件中配置的是使用mybatis链接数据库时所使用的对象 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 指定通用上下文环境所使用的配置文件路径 -->
<param-value>classpath:application-context.xml</param-value>
</context-param>
<!-- 配置监听器,在一开始的时候就创建容器,加载对象 -->
<listener>
<listener-class> org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- DispatcherServlet初始化的上下文加载的Bean是只对Spring Web MVC有效的Bean,如Controller、HandlerMapping、HandlerAdapter等等,该初始化上下文应该只加载Web相关组件-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化web层上下文环境,加载web层所需的对象以及配置的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:dispatcher-servlet.xml</param-value>
</init-param>
</servlet>
<!-- 指定dispatcherservlet的拦截规则 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 解决POST方式造成中文乱码,实际上是字符集过滤器,所有都使用utf-8 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
dispatcher-servlet.xml文件和application-context.xml文件中的配置基本和昨天的程序一致,主要就是application-context.xml文件中有所改动,将以前的手动配置映射类的方式改为采用自动扫描映射的方式,如图
最后,controller层的代码,主要是参数的获取和返回,springmvc有四个默认参数类型,分别是,HttpServletRequest request, HttpServletResponse response, HttpSession Session, Model model. 除此之外,还可以传递基本类型参数以及引用类型参数,只是需要注意传递参数时参数名必须和前端页面中的参数名相同,如果不同,需要在参数前加@RequestParam注解说明
package com.putaoteng.controller;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.putaoteng.dao.UserDao;
import com.putaoteng.model.User;
@Controller
public class SpringmvcDemo {
@Resource (name="userDao")
private UserDao userDao;
@RequestMapping (value="/index.action")
//查询所有用户信息,默认参数可以加也可以不加,都不影响,返回ModelAndView,也可以直接返回String类型,返回值是要跳转的页面的jsp文件的路径名
public ModelAndView queryUserAll(){
ModelAndView mav = new ModelAndView();
List<User> list = new ArrayList<User>();
//执行具体的查询操作
list = userDao.queryUserAll();
//以下两步是将处理结果返回
//这里的参数是jsp文件中的列表名
mav.addObject("userList", list);
//这里的参数是jsp文件的文件名
mav.setViewName("usersList");
return mav;
}
//演示默认参数
@RequestMapping(value="/indexEdit.action")
public String selectOneUser(@RequestParam (value="id") Integer idPara, Model model){
//id名称必须和页面中的参数相同,也可以使用RequestParam注解使参数和表单中的参数不一致
//进行处理
User user = userDao.queryUserById(idPara);
//将处理结果返回
model.addAttribute("user", user);
return "editUser";
}
// @RequestMapping(value="/updateuser.action")
//处理基本类型参数,参数名必须和jsp文件中的变量名称相同,如果不同则会报错
/*public String updateUser(Integer id, String name, String password, Model model){
//采用基本数据类型可以,但是如果一个表的字段非常多,那么要传递十几个参数,代码量过大所以,应该也可以传递引用数据类型
User user = new User();
user.setId(id);
user.setName(name);
user.setPassword(password);
userDao.updateUser(user);
model.addAttribute("userList", user);
return "success";
}*/
@RequestMapping(value="/updateuser.action")
public String updateUser(User user, Model model){
System.out.println(user.toString());
userDao.updateUser(user);
model.addAttribute("userList", user);
return "success";
}
}
二.明天计划完成的事情
1.今天仅实现了查询单个,查询所有以及更新数据的操作,明天将基本的CRUD操作完成
2.接口命名还很随意,不符合rest风格
3.如果有时间,尝试采用jetty容器实现
三.遇到的问题
暂无
四.收获
1.对于mybatis和springmvc的理解更加深入
2.经过袁帅师兄的指点,对任务二的需求以及rest风格的接口认识更加深入
评论