知道美河 | 上传资料 | VIP申请 | 精品课程 | 资料搜索 | 问题反馈 | 会员手册 | 积分消费 | 积分充值 | 帐号保护
美河学习学习在线赞助VIP

美河学习在线(主站) eimhe.com

 找回密码
 建立账号
查看: 6957|回复: 5

[求助] 求助

[复制链接]
发表于 2007-5-13 11:29:30 | 显示全部楼层 |阅读模式
有个问题请教一下各位老师和朋友~~~`
在使用SpringMVC的 时候 ,我 使用了多动作控制器MultiActionController,
我采用的方法是将控制器类继承MultiActionController
在Struts里面,不管用什么控制器,都可以使用ActionForm传递值,
但MultiActionController却没有CommandClass属性,那该怎么传递页面上表单里的值呢?
难道只能作为参数来传递?
请明白的 老师和朋友帮忙看一下,感激不尽
 楼主| 发表于 2007-5-15 09:02:34 | 显示全部楼层
制作再多的免费视频
也赶不上解决这样的一个小问题
我现在很想知道美河的价值在哪儿!
发表于 2007-5-15 09:12:32 | 显示全部楼层
美河的价值只是制作免费视频了提供下载。。在线回答问题没有吧。没学过SPRING
发表于 2007-5-15 14:21:46 | 显示全部楼层
发表于 2007-5-15 16:45:24 | 显示全部楼层
<?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">

    <display-name>springapp</display-name>
        
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/page/*</url-pattern>
    </servlet-mapping>

</web-app>
servlet-mapping定义所有以/page/开头的url请求都会被spring 的DispatcherServlet处理转发。默认情况下DispatcherServlet会读取<servlet-name>-servlet.xml文件的配置信息初始化,该文件中urlMapping的定义决定当前请求转发给哪个controller来处理。

Step2:定义/WEB-INF/springMVC-servlet.xml
  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <!-- 方法名解析器 -->
    <bean id="InternalPathMethodNameResolver"
        class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver" />
        
    <!-- 视图解析器 -->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass">
            <value>org.springframework.web.servlet.view.JstlView</value>
        </property>
    </bean>
   
    <bean id="controller" class="com.controller.IndexController">
        <property name="methodNameResolver">
            <ref bean="InternalPathMethodNameResolver" />
        </property>
    </bean>

    <bean id="urlMapping"
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/controller/*">controller</prop>
            </props>
        </property>
    </bean>
</beans>
urlMapping定义/controller/开头的url请求由名字为controller的控制器来处理,因为是多动作处理器,所以要定义MethodNameResolver来告诉springMVC应该调用controller的哪个方法,这里用的是InternalPathMethodNameResolver,该方法名解释器会把整个URL中最后一个"/"和最后一个"."之间的部分作为要调用的方法名。

Step3:定义controller类并继承MultiActionController
package com.controller;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class IndexController extends MultiActionController {
   
    public ModelAndView method1(HttpServletRequest request,
            HttpServletResponse respnose) throws ServletException, IOException {
        Map model = new HashMap();
        model.put("message", "你调用的是方法1");
        return new ModelAndView("/index.jsp", "model", model);
    }
   
    public ModelAndView method2(HttpServletRequest request,
            HttpServletResponse respnose) throws ServletException, IOException {
        Map model = new HashMap();
        model.put("message", "你调用的是方法2");
        return new ModelAndView("/index.jsp", "model", model);
    }
}

通过配置文件,访问上面这个controller中某个方法的url即为:localhost:8080/page/controller/方法名


Step4:/index.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>  
<body>
    <c:out value="${model.message}"/>
</body>
</html>因为InternalPathMethodNameResolver方法名解释器会把整个URL中最后一个"/"和最后一个"."之间的部分作为要调用的方法名,所以你可以在这个URL后面加任意文件格式的后缀,比如:
localhost:8080/page/controller/method1.jsp

localhost:8080/page/controller/method2.html
很爽吧,和真实的URL地址一样。

另:开发环境:MyEclipse5.0M2+tomcat5.5
  需要用到spring.jar和jstl.jar两个包。

我也不太熟悉,转个,你看看
 楼主| 发表于 2007-5-15 18:33:52 | 显示全部楼层
[quote]原帖由 longzumengyue 于 2007-5-15 16:45 发表

-------
非常感谢楼上的l朋友
我查过不少东西,网上书上都查了,都没有关于怎么传数据的解答
最后才来这里问的

我的疑问就是:
Struts的多动作控制器照常能使用ActionForm传数据
但Spring的多动作器却不行么~~~

我现在把数据都作为参数来传了,也不劳驾别人了。

再一次感谢楼上的这位朋友。
您需要登录后才可以回帖 登录 | 建立账号

本版积分规则

 
QQ在线咨询

QQ|小黑屋|手机版|Archiver|美河学习在线 ( 浙网备33020302000026号 )

GMT+8, 2025-5-4 06:18

Powered by Discuz!

© 2001-2025 eimhe.com.

快速回复 返回顶部 返回列表