HzhJava框架搭建四:一个基于注解的spring程序
来源:互联网 发布:卷皮和淘宝哪个更好 编辑:程序博客网 时间:2024/06/06 15:22
一个基于注解的简单spring程序
在“HzhJava框架搭建三”中简单的介绍了基于配置的spring程序,是为了了解spring演变过程,更了的理解spring的原理和使用方式。注解是为了简化配置而产生的一种简单的写法,我们可以简单的把注解理解成是一种“更为方便的配置”。从原理上将,注解和配置其实并没有什么不同,都是向spring的IOC容器中注入依赖,也就是把我们需要spring帮助管理的类和方法注入到IOC中,配置和注解就是spring提供了依赖注入的两种方式,我们用spring提供的方式来告诉那些依赖是要注入的即可。
先让我们来看一下程序的整个目录结构,红色方框里的内容是我们这次添加的,其它的是在“HzhJava框架搭建二”中准备的内容。
Food.java文件
<span style="font-size:12px;">package com.sprmvc.bean;public class Food {private String favoriteFruit;public String getFavoriteFruit() {return favoriteFruit;}public void setFavoriteFruit(String favoriteFruit) {this.favoriteFruit = favoriteFruit;}}</span>FoodController.java文件
<span style="font-size:12px;">package com.sprmvc.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.sprmvc.bean.Food;@Controllerpublic class FoodController {@RequestMapping(value="/food-page")public ModelAndView foodPage() {return new ModelAndView("food-form", "food", new Food());}@RequestMapping(value="/food-result")public ModelAndView processFuits(Food food) {ModelAndView modelAndView = new ModelAndView("food-result");modelAndView.addObject("food", food);return modelAndView;}}</span>food-from.jsp文件
<span style="font-size:12px;"><%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%><!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=ISO-8859-1"><title>Fruit page</title></head><body><h1>Fruit page</h1><form:form method="POST" commandName="food" action="food-result.html"><table> <tr> <td>Apple </td> <td><form:checkbox path="favoriteFruit" value="apple" /></td> </tr> <tr> <td>Orange </td> <td><form:checkbox path="favoriteFruit" value="orange" /></td> </tr> <tr> <td>Banana </td> <td><form:checkbox path="favoriteFruit" value="banana" /></td> </tr> <tr> <td colspan="2"> <input type="submit" value="Submit"/> </td> </tr></table> </form:form><br/><a href="${pageContext.request.contextPath}/">Main page</a></body></html></span>
food-result.jsp文件
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!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=ISO-8859-1"><title>Food result page</title></head><body><h1>Food result page</h1>You prefer:<br/><c:forEach var="fruit" items="${food.favoriteFruit}">${fruit}<br/></c:forEach><a href="${pageContext.request.contextPath}/">Main page</a></body></html>
index.jsp文件
<span style="font-size:12px;"><%@ page language="java" pageEncoding="UTF-8"%> <html><head><title>第一个JSP程序</title></head><body><h1>Home page</h1><p>This is Home page.</p><p><a href="food-page">Food page</a> <br /></p></body></html></span>以上是程序运行相关代码,大部分代码相信都很容易看懂,这里我就简单的介绍下spring注解用到的三个关键字
@Controller:类级别上的注解,标注了@Controller后,借助<context:component-scan>,框架能自动识别到这是一个Controller,并注入到IOC中;
@RequestMapping:可以出现在类级别上,也可以出现在方法体上,用来实现方法体和Url请求的绑定;
下面是运行程序的配置文件(基于注解也是需要有基础配置的,只是不在需要配置具体的每个类和方法,而是指定使用spring的<context:component-scan>方法),每个文件的功能和“HzhJava框架配置三”中一样,就不在重复说明来了。
1、web.xml文本配置
<span style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="3.0"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_3_0.xsd"> <!-- SpringMVC的前端控制器 --> <!-- 当DispatcherServlet载入后,它将从一个XML文件中载入Spring的应用上下文,该XML文件的名字取决于<servlet-name> --> <!-- 这里DispatcherServlet将试图从一个叫做springmvc-servlet.xml的文件中载入应用上下文,其默认位于WEB-INF目录下 --> <!-- 所以ContextLoaderListener参数值也可写成<param-value>classpath:applicationContext-*.xml</param-value> --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 使用ContextLoaderListener配置时,需要告诉它Spring配置文件的位置 --> <!-- 如果没有指定,上下文载入器会在/WEB-INF/applicationContext.xml中找Spring配置文件 --> <!-- 我们可以通过在Servlet上下文中设置contextConfigLocation参数,来为上下文载入器指定一个或多个Spring配置文件 --> <!-- 注意:contextConfigLocation参数是一个用逗号分隔的路径列表,其路径是相对于Web系统的根路径的 --> <context-param> <param-name>contextConfigLocation</param-name> <!-- <param-value>/WEB-INF/springmvc-servlet.xml</param-value> --> <param-value>/WEB-INF/springmvc-servlet.xml, /WEB-INF/applicationContext-*.xml</param-value> </context-param> <!-- 配置上下文载入器 --> <!-- 上下文载入器载入除DispatcherServlet载入的配置文件之外的其它上下文配置文件 --> <!-- 最常用的上下文载入器是一个Servlet监听器,其名称为ContextLoaderListener --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app></span>2、springmvc-servlet.xml配置
<span style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><!-- 把标记了@Controller注解的类转换为bean --><mvc:annotation-driven /><!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <context:component-scan base-package="com.sprmvc.controller" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> </beans></span>3、applicationContent-view.xml配置
<span style="font-size:12px;"><?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:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <!-- 【配置视图解析器】 --> <!-- InternalResourceViewResolver会在ModelAndView返回的视图名前加上prefix指定的前缀,再在最后加上suffix指定的后缀 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> </beans></span>配置好上述文件后,启动服务器,在浏览器的地址栏里输入localhost:8080/HzhJava/
0 0
- HzhJava框架搭建四:一个基于注解的spring程序
- HzhJava框架搭建三:一个基于配置的spring程序
- HzhJava框架搭建二:添加tomcat和spring运行一个简单web程序
- HzhJava框架搭建一:Eclipse+Maven创建一个web项目
- 基于注解的Spring MVC 框架搭建及配置详解
- Spring框架 基于注解配置(四)
- Spring 框架基于注解
- ssm基于注解的框架搭建
- spring框架基于注解aop的通知
- spring框架基于注解的容器配置
- Spring框架-基于注解的组件扫描
- 07 Spring框架 依赖注入(四)基于注解的依赖注入
- 1、Spring MVC框架搭建——基于注解方式
- SSM框架项目搭建系列(七)—Spring AOP之基于注解的声明式AspectJ
- 基于注解的spring MVC程序
- 基于注解的spring MVC程序
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(四)
- 从0开始写一个基于注解的轻量级分布式RPC框架(3)让Spring加载自定义注解
- centos配置pptp VPN服务器
- C语言undefined behaviour未定义行为
- SetWindowExtEx()与SetViewportExtEx()
- 谈谈windows与linux
- 类的构造函数
- HzhJava框架搭建四:一个基于注解的spring程序
- php模块memcache和memcached区别
- 顺时针和逆时针打印矩阵
- Java复习笔记12【字符串常用方法3】
- HDU2049
- C++科学计数法
- Mac 使用brew安装软件
- MySQL主从服务器配置的优势
- BaseExpandableListAdapter的用法