本文将以注解的方式完成一个SpringMVC的入门程序,为什么不用 xml 方式,因为 xml 方式比较繁琐,没有 注解 方式来得简单,所以推荐注解方式。
1、准备 jar 包
二、文件结构
最终,整个程序的必备文件如下
1、springmvc.xml
注意:
(1) 组件扫描
在xml配置了这个标签后, Use-default-filter此时为true,spring可以自动去扫描base-package下面或者子包下面的Java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean
在spring3.1之前使用:
在spring3.1之后使用:
(3) mvc:annotation-driven 的使用
如何我们添加一句 <mvc:annotation-driven /> 则,可以替代 注解映射器和注解适配器的那两行代码,同时,这个标签默认加载更多方法,在开发中比较实用。
注意:我在测试的时候出了500错误,百度了一下,一个博主说jdk1.8太高,用不了。应该使用jdk1.7,醉了,暂时不管啦。
(4) 视图解析器
视图解析器的前后缀添加,方便我们控制器中路径可以少写一点,方便而且减少错误。
当然,也不是必须要添加。
2、ItemsController.java
注意:
(1) 类上加 @Controller
(2)方法上加 @RequestMapping("/queryItems") ,其中 /queryItems 是这个方法的路径,因为我们在 web.xml 里设置了 <url-pattern>*.action</url-pattern> ,所以我们还要在后面加上 .action 后缀。
该方法的完整路径应该是:http://localhost:8080/springmvc/queryItems.action
对了,那个 queryItems 的名称是自定义的,一般以方法名比较好管理
(3) 这里的ModelAndView 方法,在 IDEA 下我们可以通过 Ctrl+ Shift +I 快捷键查看它的定义
(4) 前面介绍了视图解析器里添加了前后缀,所以我们这里路径可以少写一点。
3、Items.java 商品的持久类
4、itemsList.jsp 视图文件
注意:
(1) 我们需要导入 jstl 包才能使用 <c:forEach> 标签
5、web.xml
最后,启动 Tomcat,在浏览器输入 http://localhost:8080/springmvc/queryItems.action
即可看到下图
至此,我们SpringMVC入门程序完成
本文链接:https://liuyanzhao.com/5918.html
一、开发准备
1、准备 jar 包
- 本程序因为没有 涉及到数据库,所有数据都是存在对象中。所以不需要 mysql-jdbc 驱动包
- 因为我们的程序需要写jsp代码,这里我们需要 jstl.jar和一个 standard.jar
- 日志包也是需要的
- 需要导入spring的jar包,单纯的入门springmvc的话不需要导入所有的spring jar包,但是核心包和spring-web/spring-webmvc是一定要导入的,考虑到后面还会和mybatis整合,所以也导入了持久操作的包和aop的包,总共如下:
二、文件结构
resource 自己手动创的Source Folder,用于存放配置文件
----spring 存放spring的配置文件
src 源代码
----com.liuyanzhao.ssm 存放ssm的源代码
web web目录
----WEB-INF web文件
--------jsp 存放jsp文件
------------items 存放items相关的jsp文件
--------lib 存放jar包
--------web.xml web配置文件
最终,整个程序的必备文件如下
三、代码实现
1、springmvc.xml
- <?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:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/cache"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
- <!--对于注解的Handler可以单个设置
- 实际开发中建议使用组件扫描
- -->
- <!-- <bean class="com.liuyanzhao.ssm.controller.ItemsController"/>-->
- <!--可以扫描controller,service,...
- 这里让扫描controller,指定controller的包
- -->
- <context:component-scan base-package="com.liuyanzhao.ssm.controller"></context:component-scan>
- <!-- 配置注解映射器
- 将bean的name作为url进行查找,需要进行配置Handler时指定beanname(就是url)
- -->
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
- <!--配置注解适配器
- 所有的处理器适配器都实现 HandlerAdapter接口
- -->
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
- <!--使用mvc:annotation-driven可以代替代替上面的注解映射器和注解适配器
- mvc:annotation-driven默认加载了很多参数的绑定方法,比如json的转换解析器就默认加载了
- 实际开发使用 mvc:annotation-driven
- -->
- <!--<mvc:annotation-driven />-->
- <!--视图解析器
- 解析jsp解析,默认使用jstl标签,classpath下得有jstl的包
- -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <!--配置前缀和后缀,也可以不指定-->
- <property name="prefix" value="/WEB-INF/jsp/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- </beans>
注意:
(1) 组件扫描
在xml配置了这个标签后, Use-default-filter此时为true,spring可以自动去扫描base-package下面或者子包下面的Java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean
(2) 处理器适配器和映射器
在spring3.1之前使用:
注解映射器:org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
注解适配器:org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
在spring3.1之后使用:
注解映射器:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
注解适配器:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
(3) mvc:annotation-driven 的使用
如何我们添加一句 <mvc:annotation-driven /> 则,可以替代 注解映射器和注解适配器的那两行代码,同时,这个标签默认加载更多方法,在开发中比较实用。
注意:我在测试的时候出了500错误,百度了一下,一个博主说jdk1.8太高,用不了。应该使用jdk1.7,醉了,暂时不管啦。
(4) 视图解析器
视图解析器的前后缀添加,方便我们控制器中路径可以少写一点,方便而且减少错误。
当然,也不是必须要添加。
2、ItemsController.java
- package com.liuyanzhao.ssm.controller;
- import com.liuyanzhao.ssm.po.Items;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.servlet.ModelAndView;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 注解开发Handler
- * Created by 言曌 on 2017/8/15.
- */
- //使用Controller注解表示它是一个控制器
- @Controller
- public class ItemsController {
- //商品查询列表
- //@RequestMapping实现对queryItems方法和url进行映射,一个方法对应一个url
- //一般建议将url和方法名一致,也可以不同,访问时要加.action后缀
- @RequestMapping("/queryItems")
- public ModelAndView queryItems() {
- //调用service查找数据库,查询商品列表,这里使用静态数据模拟
- List<Items> itemsList = new ArrayList<Items>();
- //向list中填充数据
- Items items_1 = new Items();
- items_1.setName("华硕笔记本");
- items_1.setPrice(5000f);
- items_1.setDetail("华硕坠机堡垒,I5-4200H");
- Items items_2 = new Items();
- items_2.setName("战国策");
- items_2.setPrice(19.8f);
- items_2.setDetail("刘向著,江西教育出版社出品");
- itemsList.add(items_1);
- itemsList.add(items_2);
- //返回ModelAndView
- ModelAndView modelAndView = new ModelAndView();
- //相当于request里的setAttribute,在jsp页面中通过itemsList取数据
- modelAndView.addObject("itemsList",itemsList);
- //指定视图
- //modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
- //上边的路径,如果在视图解析器中配置了jsp路径的前缀和后缀,修改为
- modelAndView.setViewName("items/itemsList");
- return modelAndView;
- }
- //其他方法
- }
注意:
(1) 类上加 @Controller
(2)方法上加 @RequestMapping("/queryItems") ,其中 /queryItems 是这个方法的路径,因为我们在 web.xml 里设置了 <url-pattern>*.action</url-pattern> ,所以我们还要在后面加上 .action 后缀。
该方法的完整路径应该是:http://localhost:8080/springmvc/queryItems.action
对了,那个 queryItems 的名称是自定义的,一般以方法名比较好管理
(3) 这里的ModelAndView 方法,在 IDEA 下我们可以通过 Ctrl+ Shift +I 快捷键查看它的定义
(4) 前面介绍了视图解析器里添加了前后缀,所以我们这里路径可以少写一点。
3、Items.java 商品的持久类
- package com.liuyanzhao.ssm.po;
- import java.util.Date;
- /**
- * 商品的持久类
- */
- public class Items {
- private int id;
- private String name;
- private double price;
- private String detail;
- private String pic;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public double getPrice() {
- return price;
- }
- public void setPrice(double price) {
- this.price = price;
- }
- public String getDetail() {
- return detail;
- }
- public void setDetail(String detail) {
- this.detail = detail;
- }
- public String getPic() {
- return pic;
- }
- public void setPic(String pic) {
- this.pic = pic;
- }
- }
4、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>
- </c:forEach>
- </table>
- </body>
- </html>
注意:
(1) 我们需要导入 jstl 包才能使用 <c:forEach> 标签
5、web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
- version="3.1">
- <!--springmvc前端控制器-->
- <servlet>
- <servlet-name>springmvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!--contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器,适配器等等-->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:spring/springmvc.xml</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>springmvc</servlet-name>
- <url-pattern>*.action</url-pattern>
- </servlet-mapping>
- </web-app>
最后,启动 Tomcat,在浏览器输入 http://localhost:8080/springmvc/queryItems.action
即可看到下图
至此,我们SpringMVC入门程序完成
本文链接:https://liuyanzhao.com/5918.html
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏