mvc案例代码(mvc程序)
admin 发布:2022-12-19 19:47 152
今天给各位分享mvc案例代码的知识,其中也会对mvc程序进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java Web应用开发案例教程——基于MVC模式的JSP+Servlet+JDBC和AJAX
- 2、求SpringMVC大文件上传详解及实例代码
- 3、.net mvc 怎样调用 存储过程详细点最好有例子
- 4、简单的MVC例子
- 5、Spring系列(一)Spring MVC bean 解析、注册、实例化流程源码剖析
Java Web应用开发案例教程——基于MVC模式的JSP+Servlet+JDBC和AJAX
其实这种烂书你买它做什么啊?从网上找一些电子书看,然后自己动手做,效果更好点!
求SpringMVC大文件上传详解及实例代码
SpringMVC的文件上传非常简便,首先导入文件上传依赖的jar:
!-- 文件上传所依赖的jar包 --
dependency
groupIdcommons-fileupload/groupId
artifactIdcommons-fileupload/artifactId
version1.3.1/version
/dependency
在springMVC-servlet.xml配置文件中配置文件解析器:
!--1*1024*1024即1M resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常 --
!--文件上传解析器--
bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
property name="maxUploadSize" value="1048576"/
property name="defaultEncoding" value="UTF-8"/
property name="resolveLazily" value="true"/
/bean
注意解析器的id必须等于multipartResolver,否则上传会出现异常
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.File;
@Controller
public class FileController {
/**
* 上传单个文件操作
* MultipartFile file就是上传的文件
* @return
*/
@RequestMapping(value = "/upload1.html")
public String fileUpload1(@RequestParam("file") MultipartFile file) {
try {
//将上传的文件存在E:/upload/下
FileUtils.copyInputStreamToFile(file.getInputStream(), new File("E:/upload/",
file.getOriginalFilename()));
} catch (Exception e) {
e.printStackTrace();
}
//上传成功返回原来页面
return "/file.jsp";
}}
上传文件时,Controller的方法中参数类型是MultipartFile即可将文件映射到参数上。
页面:
file.jsp:
form method="post" action="/upload1.html" enctype="multipart/form-data"
input type="file" name="file"/
button type="submit" 提交/button
/form
.net mvc 怎样调用 存储过程详细点最好有例子
由于问题主要是存储过程,以下例子的架构会直接点,Controller直接依赖SqlRepository,而未用到依赖注入。。
所以,架构方面千万不要参考了这个例子。。
费话不多说,先讲数据库。举例的数据库(SQLServer 2008)名为TestDB01,仅有的一张表表名为UserInfo,表有皆不可为空的三个字段,分别为UserID(int),UserName(nvarchar(50)),UserAge(smallint),其有一条记录为UserID:1,UserName:Lcng,UserAge22。
接下来是写在数据库里的存储过程,如下:
USE [TestDB01]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[myProcedure]
@parameter1 int
AS
BEGIN
SET NOCOUNT ON;
SELECT * from [UserInfo] where [UserInfo].UserID = @parameter1
END
希望我复制粘贴时没有出错,当然,如果你对存储过程熟悉的话你会发现我的错误,如果有的话。。
存储过程表达的意思在此就不说了(想你应该熟悉存储过程),如果需要,请补充问题。。
接下来就是Visual Studio 2010里的工作了。
新建一个空ASP.NET MVC 2项目,我取的项目名是UsingProcedureInMVC,往项目里加一个名为Repositories的文件夹,此文件夹用来存放对数据库的操作的类,一会儿会讲,先看Models文件夹。
往Models文件夹里加一个名叫Person的类,Person类如下:
public class Person
{
public string PersonName { get; set; }
public short PersonAge { get; set; }
}
现在回到Repositories文件夹,往这个文件夹里加一个名叫SqlRepository的类,SqlRepository类如下:
public class SqlRepository
{
private ListPerson personList = new ListPerson();
public ListPerson PersonList
{
get
{
return personList;
}
}
public SqlRepository(string connectionString)
{
SqlConnection sqlconn = new SqlConnection(connectionString);
SqlCommand sqlcmd = new SqlCommand("myProcedure", sqlconn);
sqlcmd.CommandType = CommandType.StoredProcedure;
SqlDataReader rd;
try
{
sqlconn.Open();
sqlcmd.Parameters.Add(new SqlParameter("@parameter1", SqlDbType.Int));
sqlcmd.Parameters["@parameter1"].Value = 1;
rd = sqlcmd.ExecuteReader();
while (rd.Read())
{
personList.Add(new Person { PersonAge = (short)rd[2], PersonName = rd[1].ToString() });
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
sqlconn.Close();
}
}
同样,希望我的复制粘贴没有出错。。
希望对于此类需要讲解的只有以下这些内容,如
SqlCommand sqlcmd = new SqlCommand("myProcedure", sqlconn);
sqlcmd.CommandType = CommandType.StoredProcedure;
如果你用过ASP.NET WebForm,那么对这两条中的第一条语句你应该很熟悉,相对于ASP.NET WebForm,SqlCommand sqlcmd = new SqlCommand("myProcedure", sqlconn);只是把第一个参数由原来的SQL语句换成了定义在数据库里的存储过程的名字;而第二条语句只是告诉sqlcmd它的命令类型而已。
当然,我还要说的是,其实这根本就是在ASP.NET WebForm可以用的用法,只是我把它放到ASP.NET MVC里举例子了而已。。其实我们完全可以或说应当使用LINQ。。
还有两条要说的语句是
sqlcmd.Parameters.Add(new SqlParameter("@parameter1",SqlDbType.Int));
sqlcmd.Parameters["@parameter1"].Value = 1;
要说的是@parameter1就是定义存储过程里的那个参数,这里给这个参数的值为1,它完全可以根据你的需要而变。
接着看Controllers里的HomeController,它唯一的一个action就是Index(),定义如下
public ViewResult Index()
{
SqlRepository sr = new SqlRepository(WebConfigurationManager.ConnectionStrings["connectionString01"].ConnectionString);
return View(sr.PersonList);
}
如果对此有不明之处,请补充问题。。
最后是强类型(类型为ListUsingProcedureInMVC.Models.Person)的名叫Index的View,主要内容如下
body
div
% foreach (var v in Model)
{ %
Name:%: v.PersonName %br /
Age: %: v.PersonAge %br /
% } %
/div
/body
如果你按着这个例子做,显示的结果将会是
Name:Lc
Age: 22
祝你好运(当然,这条是不会显示的)。。
希望可以帮到你,如果还有疑问,请补充问题。
如果这对你有帮助,请标为最佳答案。
简单的MVC例子
表示层就是用户所看到的web页面,那是UI方面的事情。
原先的CS页面现在分解为逻辑层和数据层。
逻辑层就是放登录,注册这些功能的实现的类,只提供数据接口,而数据的执行则在数据层。数据层就是直接增删改查这些数据操作。
Spring系列(一)Spring MVC bean 解析、注册、实例化流程源码剖析
最近在使用Spring MVC过程中遇到了一些问题,网上搜索不少帖子后虽然找到了答案和解决方法,但这些答案大部分都只是给了结论,并没有说明具体原因,感觉总是有点不太满意。
更重要的是这些所谓的结论大多是抄来抄去,基本源自一家,真实性也有待考证。
那作为程序员怎么能知其所以然呢?
此处请大家内心默读三遍。
用过Spring 的人都知道其核心就是IOC和AOP,因此要想了解Spring机制就得先从这两点入手,本文主要通过对IOC部分的机制进行介绍。
在开始阅读之前,先准备好以下实验材料。
IDEA 是一个优秀的开发工具,如果还在用Eclipse的建议切换到此工具进行。
IDEA有很多的快捷键,在分析过程中建议大家多用Ctrl+Alt+B快捷键,可以快速定位到实现函数。
Spring bean的加载主要分为以下6步:
查看源码第一步是找到程序入口,再以入口为突破口,一步步进行源码跟踪。
Java Web应用中的入口就是web.xml。
在web.xml找到ContextLoaderListener ,此Listener负责初始化Spring IOC。
contextConfigLocation参数设置了bean定义文件地址。
下面是ContextLoaderListener的官方定义:
翻译过来ContextLoaderListener作用就是负责启动和关闭Spring root WebApplicationContext。
具体WebApplicationContext是什么?开始看源码。
从源码看出此Listener主要有两个函数,一个负责初始化WebApplicationContext,一个负责销毁。
继续看initWebApplicationContext函数。
在上面的代码中主要有两个功能:
进入CreateWebAPPlicationContext函数
进入determineContextClass函数。
进入configureAndReFreshWebApplicaitonContext函数。
WebApplication Context有很多实现类。 但从上面determineContextClass得知此处wac实际上是XmlWebApplicationContext类,因此进入XmlWebApplication类查看其继承的refresh()方法。
沿方法调用栈一层层看下去。
获取beanFactory。
beanFactory初始化。
加载bean。
读取XML配置文件。
XmlBeanDefinitionReader读取XML文件中的bean定义。
继续查看loadBeanDefinitons函数调用栈,进入到XmlBeanDefinitioReader类的loadBeanDefinitions方法。
最终将XML文件解析成Document文档对象。
上一步完成了XML文件的解析工作,接下来将XML中定义的bean注册到webApplicationContext,继续跟踪函数。
用BeanDefinitionDocumentReader对象来注册bean。
解析XML文档。
循环解析XML文档中的每个元素。
下面是默认命名空间的解析逻辑。
不明白Spring的命名空间的可以网上查一下,其实类似于package,用来区分变量来源,防止变量重名。
这里我们就不一一跟踪,以解析bean元素为例继续展开。
解析bean元素,最后把每个bean解析为一个包含bean所有信息的BeanDefinitionHolder对象。
接下来将解析到的bean注册到webApplicationContext中。接下继续跟踪registerBeanDefinition函数。
跟踪registerBeanDefinition函数,此函数将bean信息保存到到webApplicationContext的beanDefinitionMap变量中,该变量为map类型,保存Spring 容器中所有的bean定义。
Spring 实例化bean的时机有两个。
一个是容器启动时候,另一个是真正调用的时候。
相信用过Spring的同学们都知道以上概念,但是为什么呢?
继续从源码角度进行分析,回到之前XmlWebApplication的refresh()方法。
可以看到获得beanFactory后调用了 finishBeanFactoryInitialization()方法,继续跟踪此方法。
预先实例化单例类逻辑。
获取bean。
doGetBean中处理的逻辑很多,为了减少干扰,下面只显示了创建bean的函数调用栈。
创建bean。
判断哪种动态代理方式实例化bean。
不管哪种方式最终都是通过反射的形式完成了bean的实例化。
我们继续回到doGetBean函数,分析获取bean的逻辑。
上面方法中首先调用getSingleton(beanName)方法来获取单例bean,如果获取到则直接返回该bean。方法调用栈如下:
getSingleton方法先从singletonObjects属性中获取bean 对象,如果不为空则返回该对象,否则返回null。
那 singletonObjects保存的是什么?什么时候保存的呢?
回到doGetBean()函数继续分析。如果singletonObjects没有该bean的对象,进入到创建bean的逻辑。处理逻辑如下:
下面是判断容器中有没有注册bean的逻辑,此处beanDefinitionMap相信大家都不陌生,在注册bean的流程里已经说过所有的bean信息都会保存到该变量中。
如果该容器中已经注册过bean,继续往下走。先获取该bean的依赖bean,如果镩子依赖bean,则先递归获取相应的依赖bean。
依赖bean创建完成后,接下来就是创建自身bean实例了。
获取bean实例的处理逻辑有三种,即Singleton、Prototype、其它(request、session、global session),下面一一说明。
如果bean是单例模式,执行此逻辑。
获取单例bean,如果已经有该bean的对象直接返回。如果没有则创建单例bean对象,并添加到容器的singletonObjects Map中,以后直接从singletonObjects直接获取bean。
把新生成的单例bean加入到类型为MAP 的singletonObjects属性中,这也就是前面singletonObjects()方法中获取单例bean时从此Map中获取的原因。
Prototype是每次获取该bean时候都新建一个bean,因此逻辑比较简单,直接创建一个bean后返回。
从相应scope获取对象实例。
判断scope,获取实例函数逻辑。
在相应scope中设置实例函数逻辑。
以上就是Spring bean从无到有的整个逻辑。
从源码角度分析 bean的实例化流程到此基本接近尾声了。
回到开头的问题,ContextLoaderListener中初始化的WebApplicationContext到底是什么呢?
通过源码的分析我们知道WebApplicationContext负责了bean的创建、保存、获取。其实也就是我们平时所说的IOC容器,只不过名字表述不同而已。
本文主要是讲解了XML配置文件中bean的解析、注册、实例化。对于其它命名空间的解析还没有讲到,后续的文章中会一一介绍。
希望通过本文让大家在以后使用Spring的过程中有“一切尽在掌控之中”的感觉,而不仅仅是稀里糊涂的使用。
mvc案例代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mvc程序、mvc案例代码的信息别忘了在本站进行查找喔。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
- 上一篇:美食网源代码(美食网站设计代码)
- 下一篇:天猫悬浮代码放哪(天猫悬浮时间)
相关推荐
- 05-03省市区代码下载(省市县区代码)[20240503更新]
- 05-03vb6简单小游戏代码(用vb60编写简单小游戏)[20240503更新]
- 05-03msn客服代码(msn帐号)[20240503更新]
- 05-03查询区域代码的软件下载(区域查询系统代码)[20240503更新]
- 05-03设置横向打印js代码(web怎么横向打印)[20240503更新]
- 05-03android代码大全(android 代码)[20240503更新]
- 05-03html简单网页代码登录(html简单注册登录界面代码)[20240503更新]
- 05-03企业qq代码(代码名称)[20240503更新]
- 05-03包含asp学生选课系统代码的词条[20240503更新]
- 05-03熊猫直播代码(熊猫电视代码是多少)[20240503更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接