spring mvc搭建(菜鸟心得)

本次主要了解一下spring mvc搭建,如有错误,还望告知。

一个web项目在启动时,会去读取web.xml文件,web.xml简单配置如下:

1.web.xml

配置时首先要配置servlet,因为所有的请求控制都是由DispatcherServlet(spring-webmvc-3.2.0.M1.jar)来进行转发的。如果配置文件少的话可以直接在servlet中通过

<init-param>

<param-name>contextConfigLocation</param-name><param-value>相应文件路径</param-value>

</init-param>

这种方式来配置。

如果不用这种方式的话,首先要定义listener来监听context,从而通过context-param来读取里面的xml文件,配置如下:

在这个配置中会拦截所有以.do结尾的请求。

<?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">
  
 
<context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>
         /WEB-INF/applicationContext-ibatis.xml
         /WEB-INF/spring-servlet.xml
     </param-value>
</context-param>
   
 <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
          <!-- 配置spring核心servlet -->
  <servlet>
   <servlet-name>spring</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
   <servlet-name>spring</servlet-name>
   <url-pattern>*.do</url-pattern>
   <!-- url配置为/,不带文件后缀,会造成其它静态文件(js,css等)不能访问。如配为*.do,则不影响静态文件的访问 -->
  </servlet-mapping>
 
 <welcome-file-list>
     <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
 
</web-app>
  


 2.得到请求以后,要根据相应的映射来进行转发,来调用相应的DAO操作数据库获取数据,并返回数据结果,相应的配置文件如下(spring-servlet.xml):

helloWorld.do的请求,会去找相应的action,下面为helloWorldAction,会调用action中的handleRequest方法。

<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    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/aop http://www.springframework.org/schema/aop/spring-aop-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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="helloWorld.do">helloWorldAction</prop>
            </props>
        </property>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass">
            <value>org.springframework.web.servlet.view.InternalResourceView</value>
        </property>
        <property name="prefix">
            <value>/WEB-INF/JSP/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
    <bean id="helloWorldActionDAO" class="com.gc.action.HelloWorldActionDAO">
        <property name="userDAO">
            <ref bean="userDAO"/>
        </property>
    </bean>
    <bean id="helloWorldAction" class="com.gc.action.HelloWorldAction">
        <property name="helloWorld">
            <value>HelloWorld</value>
        </property>
        <property name="viewPage">
            <value>index</value>
        </property>
        <property name="helloWorldActionDAO">
            <ref bean="helloWorldActionDAO"/>
        </property>
    </bean>
    </beans>


3.HelloWorldAction

package com.gc.action;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class HelloWorldAction implements Controller{

private String helloWorld; private String viewPage; private HelloWorldActionDAO helloWorldActionDAO; @Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { // TODO Auto-generated method stub //调用相应的DAO,里显示数据(用于ibatis的测试)
//helloWorldActionDAO.display(); Map model = new HashMap(); model.put("helloWorld", getHelloWorld()); return new ModelAndView(getViewPage(),model); } public String getViewPage() { return viewPage; } public void setViewPage(String viewPage) { this.viewPage = viewPage; } public String getHelloWorld() { return helloWorld; } public void setHelloWorld(String helloWorld) { this.helloWorld = helloWorld; } public HelloWorldActionDAO getHelloWorldActionDAO() { return helloWorldActionDAO; } public void setHelloWorldActionDAO(HelloWorldActionDAO helloWorldActionDAO) { this.helloWorldActionDAO = helloWorldActionDAO; } }

  4.这样在相应的页面上就能显示数据了,index.jsp

<%@page contentType="text/html;charset=GBK"%>
<html>
<% String str = (String)request.getAttribute("helloWorld");%>
<body>
<h1><%=str%></h1>
</body>
</html>

  

大概的流程如上,在上面的操作中都是基于spring的DI来进行数据的注入。

 

 

posted on 2012-10-11 16:30  zzjjian333  阅读(318)  评论(0编辑  收藏  举报