MVC执行顺序

MVC执行顺序,第1张

MVC在底层和传统的asp.net是一致的,在底层之上,相关流程如下:

1)Global.asax里,MvcApplication对象的Application_Start()事件中,调用 RouteConfig.RegisterRoutes(RouteTable.Routes)来注册路由规则

2)RouteConfig.RegisterRoutes()方法里,给出的默认规则为{controller}/{action}/{id} .

a. 在有特别需要的时候,到这里来修改规则。

b. 未指明Controller默认为HomeContoller,未指定Action默认为Index, 也就是说,直接访问站点时,会默认导航到HomeController下的Index Action.

c. Action后跟的内容会被映射为名为id的参数。 比如: User/Delete/1 会匹配到 UserController的 Delete(int id) 方法。

d. Action分为[HttpGet]和[HttpPost]两种,与HTTP的GET和POST方式对应。 即直接请求的URL只会匹配[HttpGet]方法,而未注明[HttpPost]的方法即默认为[HttpGet]. Post的Action一般会有一个Model参数,MVC会自动将表单里的数据按约定的规则填充到Model实体对象里。 这个约定的规则,就是表单的Name与属性名称有个对应规则。

3)MVC负责按上述规则将执行流程导入合适的Action中,即Controller的某个方法中。

4)Action中,可以直接返回字符串,输出到浏览器, 也可以返回到ActionResult对象, 该对象指向一个View页面,并且附带了一些属性作为传递数据的容器。

这就是model层的设计思路

这就是分层结构,对于较大的web应用来说设计良好的model层绝对是必须的,他可以简化很多代码和数据库 *** 作,而且使用面向借口编程可以自己定制特定的功能。至于你的理解差不多正确,struts2采用valuestack来实现前后台的数据共享传输,他会把值封装到model中,所以action实现implements ModelDriven<T>里的getModel()就可以获取的封装好的参数了。

给你一个自己写的BaseAction:你的action继承他就行了

public class BaseAction<T>implements ModelDriven<T>{

@Resource

protected UserService userService//action需要用到的service都可以在这里注入

protected Class clazz

protected T model

//使用反射获取T的真实类型

public BaseAction(){

try{

Class<T>clazz = null

ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass()

clazz = (Class<T>) pt.getActualTypeArguments()[0]

this.model = clazz.newInstance()

}catch (Exception e) {

e.printStackTrace()

}

}

public T getModel() {

return model

}

}

MVC分别是Model(模型层) view(视图层) control(控制层)的缩写数据库是属于模型层的。加入在MVC模式中分离一个持久化层,那么Model层就只包括了对象的纯pojo,而数据库此时属于持久化层面.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10818530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存