Springmvc 框架学习(一) HelloWorld

By | 2014/08/31

(一)搭建开发环境

1.建立动态web工程

2.导入jar包及其依赖包

  (1).为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/dist/下的所有jar包拷贝到项目的WEB-INF/lib目录下;

  (2).需要添加Apache commons logging日志,此处使用的是commons.logging-1.1.1.jar

(二)配置开发环境

  1.配置web.xml

[code]
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!– 手动配置文件路径 –>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
[/code]

load-on-startup:表示启动容器时初始化该Servlet;

url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。“*.action”表示拦截所有以action为扩展名的请求。

自此请求已交给Spring Web MVC框架处理,因此我们需要配置Springmvc的配置文件,

[code]
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
[/code]

是手动配置springmvc的配置文件位置及文件名。如无该配置则DispatcherServlet会默认加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件。本示例为WEB-INF/ dispatcher-servlet.xml。

2.配置springmvc 配置文件 spring-mvc.xml

[code]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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.2.xsd">
<!– 注:如果出现同名,BeanNameUrl与SimpleUrl谁起作用。默认情况下按xml配置的前后顺序 也可以配置order属性的顺序。其值越小优先级越高 –>
<!– 处理器映射 –>
<!– BeanNameUrlHandlerMapping处理器映射 –>
<bean id="beanNameUrlHandlerMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

<!– SimpleUrlHandlerMapping处理器映射 –>
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!– value的值指向控制器的id –>
<prop key="a.action">myController</prop>
<prop key="b.action">myController</prop>
<prop key="myController.action">myController</prop>
</props>
</property>
</bean>
<!– controllerClassNameHandlerMapping控制器类名处理器映射 –>
<bean id="controllerClassNameHandlerMapping"
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
</bean>

<!– 控制器 –>
<bean id="myController" name="/myController.action" class="cn.ytu.web.controller.MyController"></bean>

<!– PersonCommandController命令控制器 –>
<bean id="personCommandController" class="cn.ytu.web.controller.PersonCommandController"></bean>

<!– SimpleFormController 简单表单控制器 –>
<bean id="personFormController" class="cn.ytu.web.controller.PersonFormController">
<property name="formView" value="personForm"></property>
<property name="successView" value="index"></property>
</bean>

<bean id="myWizardController" class="cn.ytu.web.controller.MyWizardController">
<property name="pages">
<list>
<value>wizard/basicInfo</value>
<value>wizard/eduInfo</value>
<value>wizard/workInfo</value>
</list>
</property>
</bean>
<bean id="internalResourceViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
[/code]

BeanNameUrlHandlerMapping:表示将请求的URL和Bean名字映射,如URL为 “上下文/myController”,则Spring配置文件必须有一个名字为“/myController”的Bean,上下文默认忽略。注意,url中的名字除Controller外不能出现大些字母,且Controller可以不写 。

SimpleControllerHandlerAdapter: 表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring Web MVC中的处理器。

视图解析器配置

[code]
<bean id="internalResourceViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
[/code]

InternalResourceViewResolver:用于支持Servlet、JSP视图解析;

2.处理器Controller

[code]
public class MyController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return new ModelAndView("hello");
    }
}
[/code]

public ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) :实现相应的功能处理,将命令对象传入业务对象进行业务处理,最后返回ModelAndView对象;
ModelAndView:包含了视图要实现的模型数据和逻辑视图名;
return new ModelAndView(“hello”):表示设置逻辑视图名为“hello”,视图解析器会将其解析为具体的视图,如前边的视图解析器InternalResourceVi。internalResourceViewResolver会将其解析为“WEB-INF/jsp/hello.jsp”。

3.视图hello.jsp(WEB-INF/jsphello.jsp)

[code]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Hello World</title>
  </head>
  <body>
    Hello SpringMVC! <br>
  </body>
</html>
[/code]

在浏览器地址栏输入:http://localhost:8080/springmvc/mycontroller.action

 

 

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据