Spring MVC (一) - HelloWorld

来源:互联网 发布:什么是java分布式 编辑:程序博客网 时间:2024/05/23 15:39

最近,可能会用到Spring MVC,特来学习一下。

首先,在网上找了些例子,总结一下。

1.新建Maven的Web项目

具体的操作步骤,可以参照关于Maven的博客。

2.pom.xml

<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 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.ygy.mvc</groupId><artifactId>mvc-helloworld</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>mvc-helloworld Maven Webapp</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>3.1.1.RELEASE</spring.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency>            <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.1.1.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>            </dependencies><build><finalName>mvc-helloworld</finalName></build></project>

这里引入了一个sping-webmvc,这是以前没有用过的;这里还需要引入jstl,要不然访问时会报错。

3.web.xml

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app>  <display-name>Archetype Created Web Application</display-name>    <servlet>  <servlet-name>helloworld</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>  <servlet-name>helloworld</servlet-name>  <url-pattern>/</url-pattern>  </servlet-mapping></web-app>

这里配置了一个Servlet,这个就是SpringMVC的核心控制器;默认情况下,配置了这个Servlet,还需要在WEB-INF下有一个和servlet-name一致的配置文件

${servlet-name}-servlet.xml,这里面配置了控制器。

4.helloworld-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><!-- HandlerMapping --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /><!-- HandlerAdapter --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /><!-- ViewResolver -->      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">          <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>          <property name="prefix" value="/WEB-INF/jsp/"/>          <property name="suffix" value=".jsp"/>      </bean>           </beans>
其实,这些类是干嘛的,现在我也不太清楚,这个以后明白了,会在博客中分享的。现在的目的是,跑通一个SpringMVC的程序。

这里的ViewResolver,配置了一些返回页面的位置和后缀名。

5.HelloWorldController

package org.ygy.mvc.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;public class HelloWorldController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {System.out.println("-----OK");// 1、收集参数、验证参数// 2、绑定参数到命令对象// 3、将命令对象传入业务对象进行业务处理// 4、选择下一个页面ModelAndView mv = new ModelAndView();// 添加模型数据 可以是任意的POJO对象mv.addObject("message", "路飞");// 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面mv.setViewName("hello");return mv;}}

修改helloworld-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><!-- HandlerMapping --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /><!-- HandlerAdapter --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /><!-- ViewResolver -->      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">          <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>          <property name="prefix" value="/WEB-INF/jsp/"/>          <property name="suffix" value=".jsp"/>      </bean>          <!-- 处理器 -->      <bean name="/hello" class="org.ygy.mvc.action.HelloWorldController" /> </beans>

6.hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!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>Hello Spring MVC</title></head><body>Hello , MVC!<br/><%=request.getAttribute("message") %><hr/>${message }</body></html>

这里还有一个问题,参照的例子中,可以使用EL表达式,我这里显示不出来,暂时 不知道为什么,以后知道了,会分享一下。

结果界面:

7.致谢

参照的博客,感谢分享:

http://jinnianshilongnian.iteye.com/blog/1594806

http://www.linuxidc.com/Linux/2012-09/70638.htm