HzhJava框架搭建三:一个基于配置的spring程序

来源:互联网 发布:mac怎么退出qq 编辑:程序博客网 时间:2024/06/07 23:48

一个基于配置的简单spring程序

先让我们来看一下程序的整个目录结构吧,红色方框里的内容是我们这次添加的,其它的是在“HzhJava框架搭建二”中就已经准备好的。


Food.java文件

package com.sprmvc.bean;public class Food {private String favoriteFruit;public String getFavoriteFruit() {return favoriteFruit;}public void setFavoriteFruit(String favoriteFruit) {this.favoriteFruit = favoriteFruit;}}
FoodController文件

package com.sprmvc.controller;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.AbstractController;import com.sprmvc.bean.Food;public class FoodController extends AbstractController {     @Override     public ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {     List<Food> foolList = new ArrayList<Food>();    Food f1 = new Food();    f1.setFavoriteFruit("香蕉");    foolList.add(f1);    Food f2 = new Food();    f2.setFavoriteFruit("苹果");    foolList.add(f2);    Food f3 = new Food();    f3.setFavoriteFruit("橘子");    foolList.add(f3);    return new ModelAndView("food-form", "food", foolList);    } }
food-form.jsp文件

<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><html><head><title>Fruit page</title></head><body><h1>Fruit page</h1><c:forEach items="${food}" var="food">     <c:out value="${food.favoriteFruit}"/><br/> </c:forEach> </body></html>
index.jsp文件

<%@ 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>
上面是程序运行的相关代码,相信大家都能很容易的看懂,就不多说了,下面是运行这些代码的配置文件,也是今天要讲的关于spring配置的具体实现。

1、首先我们需要配置一个叫做web.xml的文件,这个文件指定了由“SpringMvc的前端控制器”来响应http请求;指定了还需要加载哪些配置文件;配置上下文载入器;

<?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>
2、springmvc-servlet.xml,是将前台请求和后台java代码关联起来的地方,这里配置一个简单的映射

<?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">            <!-- 【配置映射处理器】 -->     <!-- SpringMVC自带的映射处理器均实现了Spring的Ordered接口,这意味着我们可以在应用系统中声明多个处理器映射 -->     <!-- 并且可以设置它们的优先级,这主要体现在order属性上,其值越小,则对应的该映射处理器的优先级越高 -->     <!-- SimpleUrlHandlerMapping的order值比BeanNameUrlHandlerMapping的小 -->     <!-- 这意味着DispatcherServlet在映射URL的时候,首先会咨询SimpleUrlHandlerMapping -->     <!-- 只有在SimpleUrlHandlerMapping无法返回结果时,才咨询BeanNameUrlHandlerMapping -->     <bean id="beanNameUrlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">         <property name="order" value="1"/>     </bean>     <bean name="/food-page" class="com.sprmvc.controller.FoodController" /></beans>
3、applicationContext-view.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: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>
然后启动服务器,在浏览器的地址栏里输入http://localhost:8080/HzhJava/即可运行处这个简单的spring配置的程序。

0 0