今天写了SpringMVC的第一个例子。第一个例子也是困难重重呀
好吧,下面我说说我的思路吧
首先去Spring官方下载最新版本的SpringMVC4.2.3
1,在eclipse中创建一个web工程吧,将下载回来的jar包拷贝到lib目录下
2,之前我们使用s2sh时,会有一个applicationContext.xml文件在src目录下
而现在我们不再创建他,而需要创建一个 xxx-servlet.xml的文件在我们项目的 web-inf目录下
同时也在这个目录下创建web.xml的文件
如图所示
[caption id="attachment_641" align="alignnone" width="270"] 创建servlet.xml和web.xml文件[/caption]
3,我们开始配置web.xml吧
<servlet> <servlet-name>SpringMVCone</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVCone</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
以上就是我配置的web.xml,我并没有配置init,因为这不是必须的,init用于指定入口的xml
<init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/XXX-servlet.xml</param-value> </init-param>
范load-on-startup的参数为1,表示启动时就优先启动这里
如果我们没有配置入口的xml,springmvc会自动的去web-inf里寻找 SpringMVCone-servlet.xml的文件
需要说明的是 这里的SpringMVCone-servlet.xml是固定的,因为你没有配置自己的xml文件
SpringMVCone就是我们这里配置的servlet的名字 servlet-name
4,配置我们的springmvc的配置文件
这个配置文件就相当于我们之前的s2sh中applicationContext.xml,而且这个配置文件在web-inf目录下,上面的截图已经说明
我们我们看看他的简单配置:SpringMVCone-servlet.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:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" 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.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 默认的注解映射的支持 --> <mvc:annotation-driven /> <!-- 声明使用注解的风格 --> <context:annotation-config/> <!-- 通过扫描包的方式 --> <context:component-scan base-package="com.springmvc.study.one" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>需要注意的是通过扫描包的方式,这里如果您添加了这句,就表示springmvc会去自动扫描这个包下的所谓的注解文件,就是被@Controller标记的java文件
这里就不需要再次配置这个java文件的全路劲了,如果您再配置就会发生重名错误
这个问题我们之前的 文章 Spring aop执行两次的原因 是类似的
下面的 viewResolver 配置的是我们返回视图情况:
prefix,表示我们视图的路劲,比如我这里配置的是在根目录,您也可以配置在其它的目录,包括web-inf目录
suffix,表示返回视图的文件后缀,我们这里是jsp
5,下面我们来写一个控制器(controller)吧,如下HelloWorld.java
package com.springmvc.study.one; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; @Controller public class HelloWorld { @RequestMapping(value="/welcome") public ModelAndView welcome(@RequestParam String username){ System.out.println("Hello Workd!"+username); ModelAndView model = new ModelAndView("welcome","result","Hello Workd!"+username); return model; } }@Conterller,标记了这是一个控制器,可以被springmvc扫描到
@RequestMapping,标记了通过这个URL来访问这个方法
@RequestParam,这表示获取地址栏的username的参数,注意用这种表示方法,地址栏的参数比如存在,否则会报404错误
当然,我们可以将参数改成这种, welcome(String username) 他不会报错,打印username会是null
这个方法返回的是一个ModeAndView,这个类有很多构造方法,我就不一一说了,我这里的构造方法有三个参数:
第一个,表示返回的文件名是welcome,我们没有指定后缀,因为我们的配置文件已经指明后缀是 .jsp 了
第二个和第三个表示传参,参数是result,值是"Hello Workd!"+username
然后返回一个model即可
需要说明的是 这个方法的返回值也可以是String,目前我所知道的是,由于是String类型,返回的这个字符串只能是视图的地址,而不能传参了吧
6,编写我们的视图文件测试吧
<%@ 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>Insert title here</title> </head> <body> ${result} </body> </html>
好了自此,我们的整个HelloWorld就完成了,启动我们的项目
运行
http://localhost:8080/SpringMVCone/welcome?username=java
测试下吧。
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情