SpringMVC学习笔记-SpringMVC注解开发方式

  • 注解开发方式:

在sprimgmvc3.0之后,它就全面支持

    1. 注解方式
      1. 创建一个web工程
      2. 加入jar包

跟之前的版本一样,从那个项目拷贝

      1. 创建一个Controller,注解方式

package cn.itcast.controller;

 

import javax.servlet.http.HttpServletRequest;

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

 

/**

 * @Description:

扫描二维码关注公众号,回复: 5471609 查看本文章

 * @Author:            传智播客 java学院       陈子枢

 * @Company:       http://java.itcast.cn

 * @CreateDate:    2014年11月14日

 */

@Controller    //标识这个类是一个控制器

public class HomeController {

        /*

         * 1.处理业务

         * 2.返回转向某个页面

         */

        @RequestMapping("/home.action")      //访问URL

        public String goHome(HttpServletRequest request){

                 System.out.println(request.getRequestURI());

                

                 return "index";                 //逻辑名称,经过视图解析器ViewResolver进行拼接找到转向的页面

        }

}

      1. 配置它的核心配置文件,包自动扫描

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xmlns:mvc="http://www.springframework.org/schema/mvc"

        xmlns:context="http://www.springframework.org/schema/context"

        xsi:schemaLocation="http://www.springframework.org/schema/mvc

                                                  http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

                                                  http://www.springframework.org/schema/beans

                                                  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

                                                  http://www.springframework.org/schema/context

                                       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

                                      

    <!-- 对所有的Controller进行包扫描 -->

    <context:component-scan base-package="cn.itcast.controller"/>

   

    <!-- 内部资源视图解析器 -->

    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

            <property name="prefix" value="/WEB-INF/pages/"/>

            <property name="suffix" value=".jsp"/>

    </bean>

</beans>

      1. 配置web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

       

        <!-- 管理springmvc -->

        <servlet>

                 <servlet-name>springmvc</servlet-name>

                 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

                 <init-param>

                         <param-name>contextConfigLocation</param-name>

                         <param-value>classpath:springmvc-servlet.xml</param-value>

                 </init-param>

        </servlet>

       

        <servlet-mapping>

                 <servlet-name>springmvc</servlet-name>

                 <url-pattern>*.action</url-pattern>

        </servlet-mapping>

</web-app>    

      1. 发布,测试

 

    1. 需求:模拟10条人员信息,完成CRUD操作。

完成一个内存数据库,了解springmvc前台怎样完成日常CRUD操作

 

 

    1. 和spring框架进行整合

它们分家

Spring负责管理service,dao;Springmvc负责controller

 

      1. 注解标签:

@Controller    标识类为Controller,无需继承任何的一个Controller

在controller中将一个集合给页面访问,Model对象,它是一个map,页面就可以按jstl方式来访问

@RequestMapping 设定用户敲入的URL

 

      1. 业务层,内存数据库

package cn.itcast.service;

 

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

import org.springframework.stereotype.Service;

 

import cn.itcast.domain.Person;

 

/**

 * @Description: 业务层,它归spring

 * @Author:            传智播客 java学院       陈子枢

 * @Company:       http://java.itcast.cn

 * @CreateDate:    2014年11月14日

 */

@Service

public class PersonService {

        /*

         * 模拟10条人员信息

         */

        private static Map<Integer,Person> personMap = new HashMap<Integer,Person>();

        private static Integer id = 0;

        static{

                 for(int i=0;i<10;i++){

                         Person p = new Person();

                         p.setId(id++);

                         p.setName("tony"+i);

                         p.setAge(20+i);

                        

                         personMap.put(i, p);

                 }

        }

       

        //获取所有记录

        public List<Person> listAll(){

                 return new ArrayList(personMap.values());    //将map集合放到ArrayList

        }

       

        //查询一条

        public Person get(Integer id){

                 return personMap.get(id);

        }

       

        //新增

        public void insert(Person p){

                 p.setId(id++);           //设置id自增

                 personMap.put(p.getId(), p);

        }

       

        //修改

        public void update(Person p){

                 personMap.put(p.getId(), p);

        }

       

        //删除一条

        public void deleteById(Integer id){

                 personMap.remove(id);

        }

       

        //批量删除

        public void delete(Integer[] ids){

                 for(Integer id : ids){

                         personMap.remove(id);

                 }

        }

       

}

      1. 列表

package cn.itcast.controller;

 

import java.util.List;

import java.util.Map;

 

import javax.annotation.Resource;

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

 

import cn.itcast.domain.Person;

import cn.itcast.service.PersonService;

 

/**

 * @Description:

 * @Author:            传智播客 java学院       陈子枢

 * @Company:       http://java.itcast.cn

 * @CreateDate:    2014年11月14日

 */

@Controller

public class PersonController {

        @Resource

        PersonService personService;

       

        @RequestMapping("/person/listAll.action")

        public String listAll(Map<String,Object> model){

                 List<Person> personList = personService.listAll();

                 //将返回的list集合要在页面中调用

                 model.put("personList", personList);      //这个map,springmvc它在转向之前,setAttribute

                

                 return "person/jPersonList";                    //转向列表页面

        }

}

 

 

      1. 新增

        //转向新增页面

        @RequestMapping("/person/tocreate.action")

        public String tocreate(){

                 return "person/jPersonCreate";

        }

       

        //新增保存,返回列表

       

        //从页面上获取参数,需要哪个参数,声明哪个参数,它会自动转类型

        /*

         * 现今流行开发范式,约定,在开发时,定了很多规矩;

         * springmvc 通过页面提交request,request当中获取getParamter方法获得页面中的用户输入的内容。

         * 它通过变量request中获得的这些参数,找转入的方法中有没有匹配的setXxx方法,例如页面中有一个name

         * 找方法setName,将用户填写的内容设置进去,同时,springmvc能得到参数的类型,进行强转。

         */

        @RequestMapping("/person/insert.action")

        public String insert(Person p){

                 personService.insert(p);

                

                 return "redirect:/person/listAll.action";

        }

 

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

  </head>

 

  <body>

<form action="${pageContext.request.contextPath}/person/insert.action" method="post">

 

    新增人员信息 <br>

   

<table>

<tr>

        <td>姓名</td>

        <td><input type="text" name="name"/></td>

</tr>

<tr>

        <td>年龄</td>

        <td><input type="text" name="age"/></td>

</tr>

<tr>

        <td><input type="submit" name="btnSubmit" value="保存"/></td>

        <td></td>

</tr>

</table>   

 

</form>   

  </body>

</html>

 

      1. 修改

        //转向修改页面

        @RequestMapping("/person/toupdate.action")

        public String toupdate(Integer id, Model model){

                 Person p = personService.get(id);

                 //将p传递到修改页面

                 model.addAttribute("person", p);

                

                 return "person/jPersonUpdate";

        }

       

        //修改保存

        @RequestMapping("/person/update.action")

        public String update(Person p){

                 personService.update(p);

                

                 return "redirect:/person/listAll.action";

        }

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

  </head>

 

  <body>

<form action="${pageContext.request.contextPath}/person/update.action" method="post">

        <input type="hidden" name="id" value="${person.id}"/>

  

    修改人员信息 <br>

   

<table>

<tr>

        <td>姓名</td>

        <td><input type="text" name="name" value="${person.name}"/></td>

</tr>

<tr>

        <td>年龄</td>

        <td><input type="text" name="age" value="${person.age}"/></td>

</tr>

<tr>

        <td><input type="submit" name="btnSubmit" value="保存"/></td>

        <td></td>

</tr>

</table>   

 

</form>   

  </body>

</html>

 

      1. 删除一条

        @RequestMapping("/person/deleteById.action")

        public String deleteById(Integer id){

                 personService.deleteById(id);

                

                 return "redirect:/person/listAll.action";

        }

      1. 批量删除

Strut2当中,封装字符串类型,在页面有多个同名框,它将多个值,还是一个字符串,将多个值拼接成一个字符串,之间用,加空格分割。整形,浮点,日期类型;struts2对这几个类型,直接只留第一个值。改造model对象,变属性变成数组类型。

 

Springmvc封装跟struts一致,如果字符串类型,它直接用逗号分割。整形,浮点,日期类型;struts2对这几个类型,直接只留第一个值。可以直接声明成数组。

 

   @RequestMapping("/person/delete.action")

   public String delete(@RequestParam("id")Integer[] ids){

      personService.delete(ids);

     

      return "redirect:/person/listAll.action";

     }

 

 

日期类型

Springmvc3.0之前,日期无需特殊处理,3.0之后版本要求必须自定义日期转换器

在页面提交时,springmvc封装时报错,提示400错误。

 

Springmvc标签

Struts2标签非常丰富,远远超过springmvc

 

 

文件上传

猜你喜欢

转载自blog.csdn.net/a5421901/article/details/88074087