SpringMVC传值、转发、重定向例子

  1. 练习接收页面参数值

    1. 使用request
    2. 使用@RequestParam注解
    3. 使用实体对象
  2. 练习向页面传出数据
    1. 使用ModelAndView对象
    2. 使用ModelMap对象
    3. 使用@ModelAttribute注解
  3. 练习使用session
    1. 在Controller方法参数上直接声明HttpSession即可使用
  4. 练习重定向
    1. 使用RedirectView
    2. 使用redirect:
package web;

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

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

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;

import entity.User;

//非注解方式
//public class HelloController implements Controller {
//
//
//    public ModelAndView handleRequest(HttpServletRequest request,
//            HttpServletResponse response) throws Exception {
//        System.out.println("Hello, Controller.");
//        return new ModelAndView("jsp/hello");
//    }
//
//}

@Controller
@RequestMapping("/demo")
public class HelloController{
    private Integer age=22;

    @RequestMapping("hello.do")
    public ModelAndView hello(HttpServletRequest request,
            HttpServletResponse response) throws Exception{
        return new ModelAndView("jsp/hello");
    }

    /**
     * 测试request接收参数*/
    @RequestMapping("test1.do")
    public ModelAndView test1(HttpServletRequest req){
        String userName = req.getParameter("userName");
        String password = req.getParameter("password");
        System.out.println(userName);
        System.out.println(password);
        return new ModelAndView("jsp/hello");
    }

    /**
     * 测试sping会自动将表单参数注入到方法参数
     */
    @RequestMapping("test2.do")
    public ModelAndView test2(String userName,
            @RequestParam("password") String pwd){
        System.out.println(userName+","+pwd);
        return new ModelAndView("jsp/hello");
    }

    /**
     * 测试对象接收参数
     */
    @RequestMapping("test3.do")
    public ModelAndView test3(User user){
        System.out.println(user);
        return new ModelAndView("jsp/hello");
    }

    /**
     * 使用ModelAndView传出参数 内部 HttpServletRequest的Attribute传递到jsp页面
     */
    @RequestMapping("test4.do")
    public ModelAndView test4(User user){
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("user", user);
        return new ModelAndView("jsp/hello",data);
    }

    /**
     * 使用ModelMap传出参数   内部HttpServletRequest的Attribute传递到jsp页面
     */
    @RequestMapping("test5.do")
    public ModelAndView test5(User user,ModelMap modelMap){
        modelMap.put("user", user);
        return new ModelAndView("jsp/hello");
    }

    /**
     * 使用ModelAttribute 内部HttpServletRequest的Attribute传递到jsp页面
     * 在Contoller的参数部分或者bean属性方法上使用
     */
    @RequestMapping("test6.do")
    public ModelAndView test6(@ModelAttribute("user")User user){
        return new ModelAndView("jsp/hello");
    }

    @ModelAttribute("age")
    public Integer getAge(){
        return age;
    }

    /**
     * session存储   可以使用HttpServletRequest的getSession方法访问
     */
    @RequestMapping("test7.do")
    public ModelAndView test7(HttpServletRequest req){
        HttpSession session = req.getSession();
        session.setAttribute("salary", 6000.0);
        return new ModelAndView("jsp/hello");
    }

    //返回String 转发
    @RequestMapping("/test8.do")
    public String test8(User user, ModelMap model) {
        model.addAttribute("user", user);
        return "jsp/hello";
    }

    /**
     * 错误页面
     */
    @RequestMapping("test9.do")
    public String test9(){
        return "error/error";
    }

    /**
     *使用RedirectView重定向
     */
    @RequestMapping("test10")
    public ModelAndView test10(User user){
        if(user.getUserName().equals("123")){
            return new ModelAndView("jsp/hello");//test10.do 转发
        }else{
            return new ModelAndView(new RedirectView("test9.do"));//test9.do?age=22 重定向
        }
    }

    /**
     * 使用redirect重定向
     */
    @RequestMapping("test11")
    public String test11(User user){
        if(user.getUserName().equals("123")){
            return "jsp/hello";
        }else{
            return "redirect:test9.do";
        }
    }
}

user实体

package com.tarena.entity;
import java.io.Serializable;
public class User implements Serializable {
    private Integer id;
    private String userName;
    private String password;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}
时间: 2024-08-04 22:48:48

SpringMVC传值、转发、重定向例子的相关文章

SpringMVC之转发重定向

package com.tz.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ViewController { @RequestMapping("/view") public String view(){ return "../

SpringMVC的转发与重定向

关注视图解析器与转发重定向的关系 ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 . 页面 : {视图解析器前缀} + viewName +{视图解析器后缀} <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceVi

04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

 1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构 DispatcherServlet:中央控制器,把请求给转发到具体的控制类 Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置) handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView:服务

SpringMVC+hibernate整合小例子,用户的增删查改

SpringMVC+hibernate整合小例子,用户的增删查改 对于使用框架写项目,我的第一反应的把所有需要的jar文件引入. 因为我用的是JDK1.8,当使用spring3.2 注解的时候会出现问题,所以最终使用的spring4.0.  hibernate使用的版本为4.0 .至于一些依赖包的版本就是看别人的资料拿的. 然后看下整体的项目结构 第一步写的是web.xml配置文件,当然有写东西是后面加上去的,不是一步到位的,比如说控制post方式的乱码.以及无法时候JS文件等一些静态文件,后面

Spring4 SpringMVC Hibernate4 Freemaker 整合例子

前话: 写了半年的Flex,也就是一个做一个WEB的视频监控浏览端,已经初步成型,现在是要做一个管理平台,于是终于又要用回JAVA了,但是一切都变的陌生了, 比如写个方法或者定义一个变量,总是会用Flex的语法去写,以前都是用Struts2 Hibernate Spring框架的,现在据说springMVC更流行了,于是花了这一周时间入了下门,感觉 确实不错,我是看的这个系列教程,跟开涛学SpringMvc http://jinnianshilongnian.iteye.com/category

SpringMVC笔记(六)SpringMVC的转发和重定向

一.转发和重定向 一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名处理 如果返回的字符串中带 forward: 或 redirect: 前缀 时,SpringMVC 会对他们进行特殊处理: 将 forward: 和 redirect: 当成指示符,其后的字符串作为 URL 来处理 –redirect:/success.jsp:会完成一个到 success.jsp 的重定向的操作        –forward:/success.jsp:会完成一个到 success.jsp 的转发操作

SpringMVC核心技术---转发和重定向

当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发和与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器. 对于请求转发的页面,也可以是WEB-INF中页面:对于重定向的页面,不能为WEB-INF中的页面.因为重定向相当于用户再次发出一次请求,而用户是不能直接访问WEB-INF中资源的.

SpringMVC中的重定向和转发

@RequestMapping("/addStu1") public String addStu(Student student,String departid){ Depart getdepart = departDao.getdepart(Integer.parseInt(departid)); student.setDepart(getdepart); stuDao.save(student, null); return "redirect:/findAllStu&qu

Easyui+springMVC传值

高校整体架构采用的是springMVC+hibernate+easyui+mysql; 这个项目前台框架使用的是easyui,初次使用这个框架还是觉得挺好上手的,有中文的官网而且还有很多已经做好的demo作为参照,基本上我们在项目开发中常用的控件在官网上都能够找到.除此之外还提供了帮助文档,可以在官网上面下载.帮助文档就具体的给出了每一种控件的方法,事件已经用法,还给出了一些简单的小例子,基本上都很简单. EasyUI demo中文官网地址:http://www.jeasyui.net/demo