码迷,mamicode.com
首页 > 编程语言 > 详细

12SpringMvc_在业务控制方法中写入普通变量收集参数

时间:2016-08-09 02:03:26      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

这篇文章讲的是jsp页面不是会传一些参数到Action中,那么Action怎么去接受这个数据呢?

方案:

案例结构如下:

技术分享

用的还是前一篇博客的案例,只是在上面做一些改动:这个案例用到的文件有:1.UserActio.java(控制类)2.Spring.xml(总的配置文件)3.springmvc_006.xml(这个项目独有的配置文件)4.adduser.jsp(有两个表单的jsp页面)

  第一步:编写web.xml文件。

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SpringMvc_10day_self</display-name>
  <!-- Spring提供了一个Filter专门用来解决Post提交中文的乱码问题 -->
   <filter>
     <filter-name>CharacterEncodingFilter</filter-name>
     <filter-class>
 org.springframework.web.filter.CharacterEncodingFilter
 </filter-class>
 <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
 </init-param>
</filter>
 <filter-mapping>
 <filter-name>CharacterEncodingFilter </filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>

 

 
 
  <servlet>
  <!--这个名字可以随便取得,但是这个名字取了之后,以后在 WEB-INF下面创建SpirngMVC的配置文件是,命名必须以这个开头,
  
  所以这里取名叫做DispatcherServlet,那么之后的xml文件取名必须为DispatcherServlet-servlet.xml(一个字都不能差)
  
  -->
  <servlet-name>DispatcherServlet</servlet-name>
  <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <!-- 通知DispatcherServlet去指定目录下找到springmvc.xml配置文件 -->
 <!-- 
 注意这里的  <param-name>contextConfigLocation</param-name>一个字母都不能有错
 一旦有错就会去WEB-INF下面去找
  -->
          <init-param>
               <param-name>contextConfigLocation</param-name>
              <param-value>classpath:spring.xml</param-value>
          </init-param>
 </servlet>
 <servlet-mapping>
   <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>*.action</url-pattern>
 
 </servlet-mapping>

 
  <welcome-file-list>
   
    <welcome-file>index.jsp</welcome-file>
  
  </welcome-file-list>
</web-app>

 

第二步:编写spring.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:context="http://www.springframework.org/schema/context"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      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"
>
<import resource="com/guigu/shen/Action6/springmvc_006.xml"/>
</beans>

第三步:编写com/guigu/shen/Action6/springmvc_006.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:context="http://www.springframework.org/schema/context"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      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"
>
     <!-- 控制器(程序员)(必须配置) -->
<context:component-scan base-package="com.guigu.shen.Action6"/>
 <!-- <bean name="/hello.action" class="com.guigu.shen.Action5.HelloAction"></bean> --> 

  <!-- 基于注解的映射器(可选) 
  这个类和以前的xml方式的类不同,专门是注解用的
  -->
      <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
      
      <!-- 基于注解的适配器(可选)
        这个类和以前的xml方式的类不同,专门是注解用的
       -->
      <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
      
      <!-- 视图解析器(可选) 
        这个类和以前的xml方式的类一样
      -->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   
      
   </bean>


</beans>

第四步:编写控制类UserAction.java。(这一步也是这篇文章的核心)

 

package com.guigu.shen.Action6;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * 
 * 
请求路径可以拆分为:根模块的名字+分模块的名字
就是相当于当访问http://127.0.0.1:8080:项目名/user/register时就会进入到
registerMethod方法。

 */
@Controller
@RequestMapping(value="/user")//根模块的请求名字
public class UserAction {
    /*
     * 员工注册
     * 
     */
@RequestMapping(value="/register")//分模块的请求名字
/*
 * 重点注意我这里写的参数名字。String username,String salary这里的username,salary和
 * 表单提交上来的那个名字是一模一样的。神奇的是只要保证一模一样,就可以收集页面上的值,
 * 这也是Springmvc和Struts2很不同的一点,Spring是基于参数收集数据的。Struts2是基于实体去
 * 收集数据的。造成这个问题的原因是SpringMvc里面的Action(控制器类是单例模式),如果我们采用和Struts2
 * 中一个的方式,里面定义一个Emp emp这样,emp只有一个,如由80个人提交这个请求执行这个方法的话,
 * 会导致第80个人会把之前的人的数据都替换掉。所以SpringMvc这么做的话,80个人执行80个方法,就能把每次的
 * 数据都保存下来了。
 * 
 * 
 */
public String registerMethod(Model model,String username,String salary)
{
    
    model.addAttribute("message", "员工注册成功");
    /*
     * username参数只要和页面中的name属性一样,就会被赋值。
     * salary同理
     */
    System.out.print("员工的信息"+username+";"+salary);
    return "/jsp/success.jsp";
}
@RequestMapping(value="/login")//分模块的请求名字
public String loginMethod(Model model,String username)
{
    model.addAttribute("message", "员工注册成功");
    System.out.println(username);
    return "/jsp/success.jsp";
    
}

}

第六步:测试 输入hhttp://127.0.0.1:8080/SpringMvc_10day_self/adduser.jsp

出现技术分享

 输入:姓名(年后)和薪水(100)。按下注册按钮。会进入到http://127.0.0.1:8080/SpringMvc_10day_self/user/register.action。从而执行控制类UserAction里面的public String registerMethod(Model model)方法。在控制台打出

员工的信息年后;100

---------------------------------------------------------------------------------------------------------------------------------------

 

 

 

但是上面的方法很明显有一个弊端。如果我的jsp页面上有很多的参数。不止姓名,薪水,还有年龄啊什么,那岂不是在Action中的处理方法

中要写很多的参数了啊。怎么解决?在之后的文章里面再讲。

12SpringMvc_在业务控制方法中写入普通变量收集参数

标签:

原文地址:http://www.cnblogs.com/shenxiaoquan/p/5751466.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!