(三)开发SpringMVC的程序

本文介绍如何使用SpringMVC框架实现基本的增删改查(CRUD)功能,并通过Message类展示数据处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 本次依然使用最原始的技术操作,实现数据的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提交,则出现以下错误信息:


        如果现在某个业务操作方法即支持了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属性







        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值