SpringMVC学习(二)

SpringMVC入门(注解方式)

需求

实现商品查询列表功能。

第一步:创建Web项目

springmvc02

第二步:导入jar包

第三步:配置前端控制器

在WEB-INF\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>springmvc02</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>

  <!-- 前端控制器 -->
  <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- 加载SpringMVC配置文件 -->
      <init-param>
          <!-- 如果不配置contextConfigLocation,默认查找的配置文件名称classpath下的:servlet名称+"-serlvet.xml"即:springmvc-serlvet.xml-->
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.xml</param-value>
      </init-param>
  </servlet>

  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <!--
      可以配置/ ,此工程所有请求全部由springmvc解析,此种方式可以实现 RESTful方式,需要特殊处理对静态文件的解析不能由springmvc解析
      可以配置*.do或*.action,所有请求的url扩展名为.do或.action由springmvc解析,此种方法常用
      不可以/*,如果配置/*,返回jsp也由springmvc解析,这是不对的。
       -->
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>

</web-app>

第四步:springmvc配置文件

Springmvc默认加载WEB-INF/[前端控制器的名字]-servlet.xml,也可以在前端控制器定义处指定加载的配置文件,如下:

<!-- 加载SpringMVC配置文件 -->
      <init-param>
          <!-- 如果不配置contextConfigLocation,默认查找的配置文件名称classpath下的:servlet名称+"-serlvet.xml"即:springmvc-serlvet.xml-->
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.xml</param-value>
      </init-param>

第五步:配置组件扫描器

在springmvc.xml文件配置如下:

<!-- 使用spring组件扫描 -->
    <context:component-scan base-package="com.cxz.springmvc.first" />

使用组件扫描器省去在spring容器配置每个controller类的繁琐。使用<context:component-scan自动扫描标记@controller的控制器类。

建议使用组件扫描,组件扫描可以扫描@Controller、@Service、@component、@Repsitory

第六步:配置注解处理器映射器

在springmvc.xml文件配置如下:

<!-- 注解处理器映射器 -->
    <bean
        class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
    </bean>

注解式处理器映射器,对类中标记@ResquestMapping的方法进行映射,根据ResquestMapping定义的url匹配ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装url对应的方法Method。

第七步:配置注解处理器适配器

<!-- 注解处理器适配器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

注解式处理器适配器,对标记@ResquestMapping的方法进行适配。

第八步:配置mvc:annotation-driven

<!-- 通过annotation-driven可以替代上边的处理器映射器和适配器 -->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

通过annotation-driven可以替代第六步和第七步。

第九步:配置视图解析器

在springmvc.xml文件配置如下:

<bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

InternalResourceViewResolver:支持JSP视图解析;

viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl的相关jar 包;

prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为:

前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为hello,则最终返回的jsp视图地址 “WEB-INF/jsp/hello.jsp”

第十步:后端控制器开发

com.cxz.springmvc.po添加po类

package com.cxz.springmvc.po;

import java.util.Date;

public class Items {
    private Integer id;

    private String name;

    private Float price;

    private String pic;

    private Date createtime;

    private String detail;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }

    public Float getPrice() {
        return price;
    }

    public void setPrice(Float price) {
        this.price = price;
    }

    public String getPic() {
        return pic;
    }

    public void setPic(String pic) {
        this.pic = pic == null ? null : pic.trim();
    }

    public Date getCreatetime() {
        return createtime;
    }

    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail == null ? null : detail.trim();
    }
}

com.cxz.springmvc.first添加Controller

@Controller
public class ItemController {
    @RequestMapping("/queryItems")
    public ModelAndView queryItems() {
        // 使用静态数据将商品信息列表显示在jsp页面
                // 商品列表
                List<Items> itemsList = new ArrayList<Items>();

                Items items_1 = new Items();
                items_1.setName("商品1");
                items_1.setPrice(6000f);
                items_1.setCreatetime(new Date());
                items_1.setDetail("这是商品1");

                Items items_2 = new Items();
                items_2.setName("商品2");
                items_2.setPrice(5000f);
                items_2.setDetail("这是商品2");

                itemsList.add(items_1);
                itemsList.add(items_2);

                ModelAndView modelAndView = new ModelAndView();
                modelAndView.addObject("itemsList", itemsList);
                //指定逻辑视图名
                modelAndView.setViewName("itemsList");

                return modelAndView;
    }

第十一步:视图开发

创建/WEB-INF/jsp/itemsList.jsp视图页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查询商品列表</title>
</head>
<body>
商品列表:
<table width="100%" border=1>
<tr>
    <td>商品名称</td>
    <td>商品价格</td>
    <td>商品描述</td>
</tr>
<c:forEach items="${itemsList }" var="item">
<tr>
    <td>${item.name }</td>
    <td>${item.price }</td>
    <td>${item.detail }</td>
</tr>
</c:forEach>

</table>

</body>
</html>

第十二步:部署在tomcat测试

http://localhost:8080/springmvc02/queryItems.action

时间: 2024-10-18 13:46:27

SpringMVC学习(二)的相关文章

quartz任务调度整合springMVC学习二

之前写了quartz整合spring的使用的静态调用,但实际工作中可能会需要用到动态的任务调度,不是写死在spring里面,而是可以由管理员配置怎么执行,这里就需要将quartz中trigger 和 job的信息存入数据库持久化,不过在整合springmvc前,我觉得先熟悉quartz的单独使用会更有助于学习,以下以query2.2.2为例,做了一些测试. 1.首先是创建任务调度工厂: //创建调度器工厂 SchedulerFactory schedulerFactory=new StdSche

SpringMVC学习(二)——SpringMVC架构及组件

相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗? 这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来说比较容易懂的,下面我会给出SpringMVC的框架结构图,这个图相对来说会更复杂,不过经过我细致入微的讲解,相信大家都可以深入理解. SpringMVC框架结构 SpringMVC框架结构如下图所示: 下面我会对SpringMVC框架结构作细致入微的讲解. 架构流程 用户发送请求至前端控制器Dispat

springMVC学习二 原始springMVC环境搭建

第一步:导入jar包 第二步:配置DispatcherServlet DispatcherServlet本质是一个Servlet,在spring-webmvc包中,在servlet2.5之前  springMVC配置文件的默认命名规则为xxx-serlvet.xml,xxx是为DispatcherServlet起的servlet的名称,也就是<servlet-name>标签中的值,并且默认情况下,xxx-servlet.xml文件的位置是WEB-INF目录下,不过从servlet2.5之后可以

SpringMVC学习二、入门程序与组件

入门程序 搭建环境 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <spring.version>

SpringMVC学习笔记(二): 日常使用功能

前提: 1.web.xml 和spring-mvc核心配置如:SpringMVC学习笔记(一): 基础知识中注解实现. 2.类的@RequestMapping(value="/annotationController") 3.spring-mvc 推荐使用注解实现. 一.数据的接收 (一)URL参数数据的接收 1.使用 HttpServletRequest 获取参数 <span style="font-size:18px;"><span style

springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

@[email protected] 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下) springmvc学习笔记(一) -- 从零搭建,基础入门 这一篇,在这些练习的基础上,将它们整合在一起! 搭建步骤如下 一.新建maven项目,配置环境,测试是否配置成

springMVC学习总结(二) --springMVC表单处理和静态文件处理

springMVC学习总结(二) --springMVC表单处理和静态文件处理 根据springMVC学习总结(一) --springMVC搭建 搭建项目 一.表单处理 1.创建两个java类 Student.java, StudentController.java. 2.在jsp字文件夹下面创建两个视图文件student.jsp.result.jsp. 项目目录结构如下: 实体类Student.java package com.myl.controller.form; /** * * @aut

SpringMVC学习(十二)——SpringMVC中的拦截器

SpringMVC学习(十二)--SpringMVC中的拦截器 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下SpringMVC中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法. SpringMVC中拦截器的定义和配置 SpringMVC中拦截器的定义 在SpringMVC中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的三个方法,如下: public class Inter

SpringMVC入门学习(二)

SpringMVC入门学习(二) ssm框架 springMVC 在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. model.addAttribute()的使用 model接口的源代码: 由图可知,在addAttribute()中有两种入参方式,一种是指明名字var1,一种是不指明名字var1.在不指明名字中,会通过相近的去寻找. 在addAttribute()中,我们可以放任何对象: 首先先导入jsp标签maven

SpringMVC学习(四)——处理器Handler和拦截器HandlerInterceptor

在使用springMVC的开发过程中,Handler(就是Controller)是我们需要手动开发的主要内容,注解的配置方式比较固定,可以限定请求方式,请求映射到方法级,基本可以满足我们的日常需求.所以这里主要记录基于xml配置方式的各种Handler. 这里引用开涛SpringMVC PDF中的一张图片: 这里学习一下最常用的集中实现方式: Controller:最顶层的接口,也是最简单的,重写handleRequest()即可. AbstractController:比较常用的一个接口,重写