1.在开发Spring MVC应用时,如何部署DispatcherServlet又如何创建Spr

1.在开发Spring MVC应用时,如何部署DispatcherServlet又如何创建Spr,第1张

在开发 Spring MVC 应用时,可以通过以下步骤来部署 DispatcherServlet 并创建 Spring MVC 配置:

在 webxml 中配置 DispatcherServlet:

xmlCopy code<servlet>

 <servlet-name>dispatcher</servlet-name>

 <servlet-class>orgspringframeworkwebservletDispatcherServlet</servlet-class>

 <init-param>

   <param-name>contextConfigLocation</param-name>

   <param-value>/WEB-INF/spring-dispatcher-servletxml</param-value>

 </init-param>

 <load-on-startup>1</load-on-startup></servlet><servlet-mapping>

 <servlet-name>dispatcher</servlet-name>

 <url-pattern>/</url-pattern></servlet-mapping>

这个配置将 DispatcherServlet 映射到应用的根路径,即所有请求都会被转发到 DispatcherServlet 进行处理。

创建 Spring MVC 配置文件 spring-dispatcher-servletxml:

xmlCopy code<xml version="10" encoding="UTF-8"><beans xmlns=""

   xmlns:context=""

   xmlns:mvc=""

   xmlns:xsi=""

   xsi:schemaLocation="

       

       

       

       

       

       ;

   <!-- 配置控制器 -->

   <mvc:annotation-driven />

   <!-- 扫描包 -->

   <context:component-scan base-package="comexamplecontroller" />

   <!-- 视图解析器 -->

   <bean id="viewResolver" class="orgspringframeworkwebservletviewInternalResourceViewResolver">

       <property name="prefix" value="/WEB-INF/views/" />

       <property name="suffix" value="jsp" />

   </bean></beans>

这个配置文件包含了 Spring MVC 应用的相关配置,包括控制器的扫描、视图解析器的配置等。

以上是部署 DispatcherServlet 和创建 Spring MVC 配置的基本步骤,具体还需根据实际情况进行调整和扩展。

在方法Controller的视图方法中返回return View(menus);---menus为你的数据集合,一般为List<实体名> 所定义的接收的数据

然后在你的VIEW 中最上面第一行以@model List<ZkxJkcDomainSysMenu>---这个为你接收的数据集合Model,类型必须与Controller里面返回的类型一样

最后只需要@foreach(var item in Model){}就可以了!记住 了。Controller代码需要以@开始

;       在 MVC的一个开源项目MvcContrib中 为我们提供了几个视图引擎 例如NVelocity Brail NHaml XSLT 那么如果我们想在ASP NET MVC中实现我们自己的一个视图引擎 我们应该要怎么做呢?

我们知道呈现视图是在Controller中通过传递视图名和数据到RenderView()方法来实现的 好 我们就从这里下手 我们查看一下ASP NET MVC的源代码 看看RenderView()这个方法是如何实现的

protected virtual void RenderView(string viewName string masterName object viewData) { ViewContext viewContext = new ViewContext( ControllerContext viewName masterName viewData TempData); ViewEngine RenderView(viewContext); }//

这是P 的源码 P 略有不同 原理差不多 从上面的代码我们可以看到 Controller中的RenderView()方法主要是将ControllerContext viewName masterName viewData TempData这一堆东西封装成ViewContext 然后把ViewContext传递给ViewEngine RenderView(viewContext) 嗯 没错 我们这里要实现的就是ViewEngine的RenderView()方法

ASP NET MVC为我们提供了一个默认的视图引擎 这个视图引擎叫做 WebFormsViewEngine 从名字就可以看出 这个视图引擎是使用ASP NET web forms来呈现的 在这里 我们要实现的视图引擎所使用的模板用HTML文件吧 简单的模板示例代码如下

<!DOCTYPE PUBLIC //W C//DTD XHTML Transitional//EN transitional dtd > < XMLns= > > <head> <title>自定义视图引擎示例</title> </head> <body> <h >{$ViewData Title}</h > <p>{$ViewData Message}</p> <p>The following fruit is part of a string array: {$ViewData FruitStrings[ ]}</p> <p>The following fruit is part of an object array: {$ViewData FruitObjects[ ] Name}</p> <p>Here s an undefined variable: {$UNDEFINED}</p> </body> < ml>

下面马上开始我们的实现 首先 毫无疑问的 我们要创建一个ViewEngine 就命名为 SimpleViewEngine 吧 注意哦 ViewEngine要实现IViewEngine接口

public class SimpleViewEngine : IViewEngine { #region Private members IViewLocator _viewLocator = null; #endregion #region IViewEngine Members : RenderView() public void RenderView(ViewContext viewContext) { string viewLocation = ViewLocator GetViewLocation (viewContext viewContext ViewName); if (string IsNullOrEmpty(viewLocation)) { throw new InvalidOperationException(string Format ( View { } could not be found viewContext ViewName)); } string viewPath = viewContext >

Action中这样:

ViewBagData = (DataTable对象)

视图中:

@{

DataTable dt = (DataTable)ViewBagData;

for(var i=0;i<dtRowsCount;i++){

//写代码。

}

}

ASPNET MVC默认会到Views下对应的控制器名的文件夹下寻找和这个动作方法同名的视图(如果你指定了视图名则会按照你指定的视图名查找)。但是这中间是如何做到的呢?其实多亏ASPNET MVC的灵活性强的特点,当你返回View之后,控制器会通过一组视图引擎去查找对应的页面,如果其中一个视图引擎返回了符合的视图则结束查找开始渲染视图。

视图引擎,它要能够根据要求返回符合的视图(实现Iview接口),而视图引擎需要实现IViewEngine接口,IViewEngine接口代码如下所示:

1     public interface IViewEngine2     {3         ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache);4         ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache);5         void ReleaseView(ControllerContext controllerContext, IView view);6 }

1)ViewData:后端以字典形式赋值(baseViewData["key"]=value),前端显示界面直接(@ViewData["key"])调用。

2)ViewBag:ViewBag为dynamic类型,后端可以直接进行赋值( baseViewBagname= ""),前端显示界面直接(@ViewBagname)调用。 注:ViewBag可能会覆盖ViewData的数据

3)TempData:后端以字典形式赋值(baseViewData["key"]=value),前端显示界面直接(@TempData["key"])调用,但TempData的数据会保存到浏览器的session中,所以可以跨试图调用。

4)Model:后端为正常实体类,在前端显示界面使用时,开头先引用命名空间,并以(@model ClassName)标记,后面直接(@ModelName)使用。

后端控制器赋值

前端视图使用

我也是刚学。

你是没定义这些变量吧,需要在action里定义才可。

ViewData、ViewBag、TempData、Model属性

这4种传递数据的方式。

public ActionResult Show()

{

       TempData["a"] = "叼毛";

       ViewData["a"] = "刁海";

       ModelsStudent stu = new Student() { Sid=10, Sname="猫咪"};

       return View(stu);//return这个stu、Model才会有值。           

}

然后在Showcshtml页面里可以使用这些数据

@TempData["a"] = "叼毛";

@ViewData["a"] = "刁海";

@ModelSid;

@ModelSname;

以上就是关于1.在开发Spring MVC应用时,如何部署DispatcherServlet又如何创建Spr全部的内容,包括:1.在开发Spring MVC应用时,如何部署DispatcherServlet又如何创建Spr、ASP.NET MVC中如何返回一个DataSet给VIEW显示、ASP.NET MVC实现自己的视图引擎等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9748576.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存