基本的SpringMVC案列

一、与Struts区别:

(1)SpringMVC会将URL请求路径与controller类某个方法进行绑定,请求参数作为形参,用户在网页上的请求路径会被映射到Controller类对应的方法上。而Struts的Action类中所有方法使用的请求参数都是Action类中的成员变量,随着方法变多,会比较混乱。

(2)SpringMVC支持单例开发,而Struts由于只能通过类的成员变量接受参数,所以无法使用单例,只能使用多例。

(3)SpringMVC比Struts更快。

二、简单的案列:

1、环境搭建:

(1)在myeclipse下新建一个webproject:SpringMVC_test,src下新建两个包:cn.com.mvc.controller和cn.com.mvc.model分别放置控制器类和实体类(数据模型)

(2)建立源文件夹config,存放SpringMVC核心配置文件:springmvc.xml

(3)在WEB-INF创建jsp文件夹,存放网页。WEB-INF是私有文件夹,无法通过路径访问,比较安全

(4)导入SpringMVC所需的jar包,所需如下所示:

2、在web.xml中增加SpringMVC的拦截器:从而可将符合条件的请求拦截到SpringMVC专有的Servlet上

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <!-- SpringMvc前端控制器 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

3、编写核心文件springmvc.xml

注意:beans xmlns中的内容如果版本不符,会报错

<?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" 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.2.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.2.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
        
        <!-- 处理器映射器:将bean的name作为url进行查找 -->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
          
        <!-- 处理器适配器:该适配器支持所有实现了controller接口的handler控制器,会执行具体的controller方法 -->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
        
        <!-- 视图解析器:该解析器会根据handler方法执行后返回的jsp具体位置来加载相应界面 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        </bean>
         <!-- 根据请求url,映射对应的handler类 -->
        <bean name="/queryFruits_test.action" class="cn.com.mvc.controller.FruitsControllerTest"/>

</beans>

4、编写Handler处理器与视图:

package cn.com.mvc.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.Controller;

import cn.com.mvc.model.Fruits;

public class FruitsControllerTest implements Controller{

    private FruitsService fruitsService = new FruitsService();
    
    @Override
    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        //模拟Service获取水果商品列表  
        List<Fruits> fruitsList = fruitsService.queryFruitsList();  
  
        //返回ModelAndView  
        ModelAndView modelAndView =  new ModelAndView();  
        //相当 于request的setAttribut,在jsp页面中通过fruitsList取数据  
        modelAndView.addObject("fruitsList", fruitsList);  
          
        //指定视图  
        modelAndView.setViewName("/WEB-INF/jsp/fruitsList.jsp");  

        return modelAndView;  
    }
    
    //内部类
    class FruitsService{
        public List<Fruits> queryFruitsList(){
            List<Fruits> fruitsList = new ArrayList<Fruits>();
            Fruits apple = new Fruits();
            apple.setName("苹果");
            apple.setPrice(5.0);
            apple.setProducing_area("杭州");
            
            Fruits banana = new Fruits();
            banana.setName("香蕉");
            banana.setPrice(9.0);
            banana.setProducing_area("河南");
            
            Fruits ma = new Fruits();
            ma.setName("马");
            ma.setPrice(15.0);
            ma.setProducing_area("广西州");
            
            fruitsList.add(apple);
            fruitsList.add(banana);
            fruitsList.add(ma);
            
            return fruitsList;
        }
    }

}

实体类:

package cn.com.mvc.model;

public class Fruits {
    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 getProducing_area() {
        return producing_area;
    }
    public void setProducing_area(String producing_area) {
        this.producing_area = producing_area;
    }
    private String name;
    private double price;
    private String producing_area;
}
 

jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   
<!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>     
  <h3>新鲜水果</h3>  
  <table width="300px;" border=1>  
    <tr>  
      <td>名称</td>  
      <td>价格</td>    
      <td>产地</td> 
   </tr>  
   <c:forEach items="${fruitsList }" var="fruit">  
     <tr>  
       <td>${fruit.name }</td>  
       <td>${fruit.price }</td>    
       <td>${fruit.producing_area }</td>  
     </tr>  
    </c:forEach>  
   </table>
</body>  
</html>

5、运行效果:

将程序部署在tomcat7,并运行。浏览器输入:

http://localhost:8080/SpringMVC_test/queryFruits_test.action

结果如下:

猜你喜欢

转载自blog.csdn.net/figo8875/article/details/85091458
今日推荐