本次依然使用最原始的技术操作,实现数据的CRUD功能,但是数据依然以VO类的形式返回.

项目名:SpringMVCProject

1.建立一个Message.java类,这个类里面负责数据的接受操作;

package cn.zwb.vo;
 
import java.io.Serializable;
import java.util.Date;
 
public class Message implements Serializable {
    private Integer mid;
    private String title;
    private Double price;
    private Date pubdate;
    public Integer getMid() {
        return mid;
    }
    public void setMid(Integer mid) {
        this.mid = mid;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
    public Date getPubdate() {
        return pubdate;
    }
    public void setPubdate(Date pubdate) {
        this.pubdate = pubdate;
    }
    
}

2.定义Action

(如果使用的是Struts1.x,Struts2.x都需要去继承一个父类)

范例:定义MessageActon

package cn.zwb.action;
 
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
 
 
import cn.zwb.vo.Message;
 
 
@Controller  //现在这里定义了控制器
@RequestMapping("/pages/back/message/*")//整体的访问路径
public class MessageAction {
    @RequestMapping("hello_demo")  //为demo方法定义子路径
    public void insert(Message msg){
        System.out.println(msg);
    }
}

下面由于是第一次执行,所以现在可以直接利用地址重写的方式传递所需要的数据

http://localhost:8080/SpringMVCProject/pages/back/message/hello_demo.action?mid=1&title=hahahah&price=1.1&type.type=lalalal

结果:Message [mid=1, title=hahahah, price=1.1, pubdate=null, type=Type [type=lalalal]]

此时的代码之中可以发现最大的特点在于,控制器里面不需要再去编写类属性来接收参数,所有的参数都直接放到了处理的业务方法上,同时避免了那些实例化对象问题.

        而在整个操作过程之中最为关键问题是:传递的参数只需要传递属性名称即可,如果是一些引用的关系,则只需要按照"."排列即可.

        在Spring MVC之中还可以设计某一个业务方法的处理的请求类型.

@RequestMapping(value="hello_demo",method=RequestMethod.GET)  

        如果使用此类的语句表示配置的方法只能够使用GET请求模式进行触发,也可以修改成POST请求:

@RequestMapping(value="hello_demo",method=RequestMethod.POST)  

如果业务处理的方法设置为了POST请求,那么就表示只能够由表单提交到此方法上,如果使用了GET提交,则出现以下错误信息:
3.开发SpringMVC的程序

如果现在某个业务操作方法即支持了GET,又支持了POST请求处理,那么就不要去写上method,

@RequestMapping(value="hello_demo")

        对于返回值的处理,在Spring MVC里面有一些要求了,在正常的开发环境之中,往往都会提供有一个forward.jsp的页面,这个页面的功能是进行操作完成后的信息提示.

范例:定义forward.jsp页面

<body>
    <script type="text/javascript">
        window.alert("${msg}");
        window.location="<%=basePath%>${url}"
    </script>
</body>

如果现在由一个控制器跳转到forward.jso页面,那么至少需要以下内容:

        控制器需要知道forward.jsp页面路径;

        控制器需要传递若干个request属性.

    正因为很多的开发者都会面临同样的问题,所以在Spring MVC里面就专门设计了一个类:org.springframework.web.portlet.ModelAndView,而在这个类里面定义有如下的操作方法:

        构造方法:

public ModelAndView()
        构造方法:跳转的路径地址

public ModelAndView(java.lang.String viewName)
       保存属性:
public ModelAndView addObject(java.lang.String attributeName,
java.lang.Object attributeValue)
范例:

package cn.zwb.action;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
 
import cn.zwb.vo.Message;
 
@Controller  //现在这里定义了控制器
@RequestMapping("/pages/back/message/*")//整体的访问路径
public class MessageAction {
    @RequestMapping(value="hello_demo")  //为demo方法定义子路径
    public ModelAndView insert(Message msg){
        ModelAndView mav=new ModelAndView("/forward.jsp");
        mav.addObject("msg", "消息信息添加成功").addObject("url","index.jsp");
        System.out.println(msg);
        return mav;
    }
}

通过以上的程序分析就可以总结出Spring MVC设计的优势;

        避免了过于复杂的页面跳转路径的配置操作;

        避免了项目之中出现过多的"."作为参数的情况.

        通过以上可以发现,ModelAndView包装了跳转路径,包装了request属性

 

posted on 2018-10-26 13:44 剑主_ch 阅读(...) 评论(...) 编辑 收藏

相关文章:

  • 2021-10-04
  • 2022-02-05
  • 2022-12-23
  • 2022-12-23
  • 2021-12-11
  • 2022-12-23
  • 2021-12-13
  • 2021-11-30
猜你喜欢
  • 2022-12-23
  • 2021-05-29
  • 2021-04-15
  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案