发表于: 2017-07-18 21:23:51

1 1370


一.今天完成的主要事情

.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风格的接口认识更加深入


返回列表 返回列表
评论

    分享到