springmvc使用注解进行开发

springmvc使用注解进行开发

  • DispatcherServlet.properties
  • springmvc注解开发
    • jar包的依赖
    • 配置DispatcherServlet
    • 配置注解映射器和适配器
    • Handler处理器
    • ViewResolver(视图解析器)
    • itemsList.jsp页面
    • 部署运行
    • 静态资源的访问
    • 重新访问,启动项目,效果如下

DispatcherServlet.properties

springmvc使用注解进行开发_第1张图片
springmvc使用注解进行开发_第2张图片

前端控制器从DispatcherServlet.properties中加载处理映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,使用默认加载的。

springmvc注解开发

实际企业开发中使用springmvc注解进行开发

jar包的依赖

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0modelVersion>
	<groupId>cn.companygroupId>
	<artifactId>springdemo2artifactId>
	<version>0.0.1-SNAPSHOTversion>
	<packaging>warpackaging>
	<dependencies>
		
		<dependency>
			<groupId>junitgroupId>
			<artifactId>junitartifactId>
			<version>4.12version>
			<scope>testscope>
		dependency>
		
		<dependency>
			<groupId>org.springframeworkgroupId>
			<artifactId>spring-webmvcartifactId>
			<version>5.2.4.RELEASEversion>
		dependency>
		
		<dependency>
			<groupId>javax.servletgroupId>
			<artifactId>javax.servlet-apiartifactId>
			<version>4.0.1version>
			<scope>providedscope>
		dependency>
		
		<dependency>
			<groupId>javax.servlet.jspgroupId>
			<artifactId>javax.servlet.jsp-apiartifactId>
			<version>2.3.3version>
			<scope>providedscope>
		dependency>
		
		
		<dependency>
			<groupId>jstlgroupId>
			<artifactId>jstlartifactId>
			<version>1.2version>
		dependency>
	dependencies>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.tomcat.mavengroupId>
				<artifactId>tomcat7-maven-pluginartifactId>
				<version>2.2version>
				<configuration>
					<port>8080port>
					<hostName>localhosthostName>
					<uriEncoding>UTF-8uriEncoding>
				configuration>
			plugin>
		plugins>
	build>
project>

配置DispatcherServlet

在web.xml中配置


<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"
	version="2.5">
	<display-name>springdemo2display-name>
	
	<servlet>
		<servlet-name>springmvcservlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
		
		<init-param>
			<param-name>contextConfigLocationparam-name>
			<param-value>classpath:spring-mvc.xmlparam-value>
		init-param>
		<load-on-startup>1load-on-startup>
	servlet>
	
	<servlet-mapping>
		<servlet-name>springmvcservlet-name>
		<url-pattern>/url-pattern>
	servlet-mapping>
web-app>

配置注解映射器和适配器

在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。
在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解适配器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。

在这里插入图片描述


	

Handler处理器

  1. 在springmvc的配置文件spring-mvc.xml中配置组件扫描

	<context:component-scan base-package="cn.itcast.ssm.controller"/>
  1. 开发Handler也就是Controller
package cn.itcast.ssm.controller;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import cn.itcast.ssm.po.Items;
/**
 * 
 * @author 86182
 *
 */
@Controller
public class ItemController{
     
	/*
	 * @Controller指定这是一个Handler(处理器)
	 *@RequestMapping: 标记请求 URL 
	 */
	@RequestMapping("/hello")
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
     
		// 调用service查找 数据库,查询商品列表,这里使用静态数据模拟
		List<Items> items = new ArrayList<Items>();
		// 向list中填充静态数据
		Items items_1 = new Items();
		items_1.setName("联想笔记本");
		items_1.setPrice(6000f);
		items_1.setDetail("ThinkPad T430联想笔记本电脑!");

		Items items_2 = new Items();
		items_2.setName("苹果手机");
		items_2.setPrice(5000f);
		items_2.setDetail("iphone6苹果手机!");
		items.add(items_1);
		items.add(items_2);
		/*
		 * ModelAndView有两个常用的构造器
		 * ModelAndView(String viewName)
		 * ModelAndView(String viewName,Map data)
		 * 注:
		 * 		viewName:视图名
		 * 		data: 数据
		 */
		//返回ModelAndView
		ModelAndView modelAndView=new ModelAndView();
		//相当于request的setAttribute,在jsp页面中通过items获取数据
		modelAndView.addObject("items",items);
		//指定视图
		modelAndView.setViewName("items/itemsList");
		return modelAndView;
	}

}

ViewResolver(视图解析器)

在springmvc的配置文件中添加如下代码:


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

itemsList.jsp页面

<%@ page 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"%>

<html>
<head>
<meta charset="UTF-8">
<title>查询商品列表title>
head>
<body>
	<form action="${pageContext.request.contextPath }/item/queryItem.do"
		method="post">
		<table width="100%" border="1">
			<tr>
				<td><input type="submit" value="查询">td>
			tr>
		table>
		商品列表:
		<table width="100%" border="1">
			<tr>
				<td>商品名称td>
				<td>商品价格td>
				<td>生产日期td>
				<td>商品描述td>
				<td>操作td>
			tr>
			<c:forEach items="${items }" var="items">
				<tr>
					<td>${items.name }td>
					<td>${items.price }td>
					<td>
						 <fmt:formatDate
							value="${items.createtime }" pattern="yyyy-MM-dd HH:mm:ss" />
					td>
					<td>${items.detail }td>
					<td><a
						href="${pageContext.request.contextPath }/item/editItem.do?id=${items.id}">修改a>
					td>
				tr>
			c:forEach>
		table>
	form>
body>
html>

部署运行

点击项目->右键鼠标,选择Run as ,选择Maven build,弹出如下窗口,在Goals输入框中输入tomcat7:run,然后点击Apply,再点击Run

springmvc使用注解进行开发_第3张图片

springmvc使用注解进行开发_第4张图片

访问页面出现404,是由于在配置springmvc前端控制器访问时,DispatcherServlet拦截了所有的请求
静态资源无法直接访问,所以需要在springmvc的配置文件spring-mvc.xml中配置静态资源的访问

springmvc使用注解进行开发_第5张图片

静态资源的访问


	<mvc:resources location="/" mapping="/**"/> 

重新访问,启动项目,效果如下

springmvc使用注解进行开发_第6张图片

你可能感兴趣的:(java,java,spring)