mvc架构设置教程(spring mvc mybatis 整合 大体步骤)
本文目录
- spring mvc mybatis 整合 大体步骤
- 如何在struts1框架基础的程序上配置springmvc框架
- win7 iis如何配置mvc架构的网站 急急急!!! 我们公司的程序员也不会 只能自己搞了 求大神帮帮忙啊!
- MVC和三层架构
spring mvc mybatis 整合 大体步骤
一、简单说明用到的框架:spring、springmvc,mybatis开发工具:eclipse,apache-tomcat-6.0.39jar包管理:maven开发过程一、建立工程1、引入相关jar包:《dependencies》《!--测试包 --》《dependency》《groupId》junit《/groupId》《artifactId》junit《/artifactId》《version》4.8.1《/version》《scope》test《/scope》《/dependency》《!-- servlet的jar包 添加《scope》provided《/scope》, 因为provided表明该包只在编译和测试的时候用--》《dependency》《groupId》javax.servlet《/groupId》《artifactId》servlet-api《/artifactId》《version》2.5《/version》《scope》provided《/scope》《/dependency》《/dependencies》 二、引入mybatis相关内容并测试1、引入JAR包《properties》《project.build.sourceEncoding》UTF-8《/project.build.sourceEncoding》《maven.build.timestamp.format》yyyyMMddHHmmss《/maven.build.timestamp.format》《mybatis.version》3.3.1《/mybatis.version》《/properties》《dependencies》《!--测试包 --》《dependency》《groupId》junit《/groupId》《artifactId》junit《/artifactId》《version》4.8.1《/version》《scope》test《/scope》《/dependency》《!-- servlet的jar包 添加《scope》provided《/scope》,因为provided表明该包只在编译和测试的时候用--》《dependency》《groupId》javax.servlet《/groupId》《artifactId》servlet-api《/artifactId》《version》2.5《/version》《scope》provided《/scope》《/dependency》《dependency》《groupId》org.mybatis《/groupId》《artifactId》mybatis《/artifactId》《version》${mybatis.version}《/version》《/dependency》《dependency》《groupId》mysql《/groupId》《artifactId》mysql-connector-java《/artifactId》《version》5.1.25《/version》《/dependency》《/dependencies》 这里面在pom里面使用了《properties》 标签重点看一下,在这个环节添加了数据库连接的jar包和mybatis的jar包。这里要想可以操作数据库需要编程式的读取配置文件一般放在classpath下面。这里取名为conf.xml.这个里面主要完成2件事:a:对数据库4个基本信息的配置, b:引入mapper.xml文件。《?xml version="1.0" encoding="UTF-8"?》***隐藏网址***《configuration》《environments default="development"》《environment id="development"》《transactionManager type="JDBC" /》《!-- 配置数据库连接信息 --》《dataSource type="POOLED"》《property name="driver" value="com.mysql.jdbc.Driver" /》《property name="url" value="jdbc:mysql://localhost:3306/SSM_XML"/》《property name="username" value="root" /》《property name="password" value="root" /》《/dataSource》《/environment》《/environments》《mappers》《!-- 注册userMapper.xml文件,--》《mapper resource="im/fenqi/study/user/mapper/UserMapper.xml"/》《/mappers》《/configuration》 下面对这个步骤里面的内容进行详细说明:1、创建im.fenqi.study.user.entity.User实体对象,这里导入一个lombok插件,这个插件要安装(具体百度),可以不用显示的写set/get方法。2、创建im/fenqi/study/user/mapper/UserMapper.xml文件,这个里面是对数据库进行操作一般和 im.fenqi.study.user.mapper.UserMapper配对使用,里面注意点。标签mapper里面的namespace的值就是配对的JAVA类im.fenqi.study.user.mapper.UserMapper标签resultMap:是为了解决实体类的属性名字和数据库字段名字不一致的问题。主键和其他键是有区别的。resultMap里面定义的字段和属性在对应的表和实体必须有对应的内容否则会报错。标签trim:可以处理user(user_id,user_name,password)等问题,里面的子标签为:prefix:前缀覆盖并增加其内容suffix:后缀覆盖并增加其内容prefixOverrides:前缀判断的条件找到最前面的和条件一样的内容然后变成prefix里面的内容例:《trim prefix="where" prefixOverrides="AND"》《/trim》根据条件判断trim里面的字符串为"AND id=#{id} AND name like #{name}"找到最前面的AND(prefixOverrides的内容)替换成where(prefix内容)如果没有prefixOverrides的内容就直接加在前面。suffixOverrides:后缀判断的条件和prefixOverrides类似。标签if:比较简单,《if test="判断条件"》《/if》标签sql:《sql id="Base_Column_List"》id, user_id,user_name,password《/sql》使用场景:select 《include refid="Base_Column_List" /》 from user需要返回的字段很多的时候不用每次都写一遍3、创建im.fenqi.study.user.mapper.UserMapper类这个和上面的文件是成对出现的,这是一个接口接口里面的方法名和UserMapper.xml里面的id要一致4、测试类userTest在本地测试主要使用SqlSession对象二这个对象需要使用SqlSessionFactory对象才能创建,下面先说SqlSessionFactory对象是怎么得到的a:获取配置文件config.xml的输入流:String resource = "/conf.xml";//从classpath里面寻找InputStream resourceAsStream = Object.class.getResourceAsStream(resource);b:获取SqlSessionFactory对象SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);c:获取SqlSession对象:SqlSession session = factory.openSession();d:得到dao层的对象UserMapper userMapper = session.getMapper(UserMapper.class);d:插入数据User user = new User();user.setUserId(UUID.randomUUID().toString());user.setUserName("zw1");user.setPassword("123456");int count = userMapper.saveUserInfo(user);session.commit();System.out.println("insert:"+count);三、引入spring框架并测试首先需要引入必要的jar包,主要是spring必要的包和spring支持mybatis,jdbc的包《!--spring基础的包 --》《dependency》《groupId》org.springframework《/groupId》《artifactId》spring-core《/artifactId》《version》${spring.version}《/version》《/dependency》《dependency》《groupId》org.springframework《/groupId》《artifactId》spring-beans《/artifactId》《version》${spring.version}《/version》《/dependency》《dependency》《groupId》org.springframework《/groupId》《artifactId》spring-context《/artifactId》《version》${spring.version}《/version》《/dependency》《dependency》《groupId》org.springframework《/groupId》《artifactId》spring-expression《/artifactId》《version》${spring.version}《/version》《/dependency》《!--spring+mybatis+jdbc--》《dependency》《groupId》org.mybatis《/groupId》《artifactId》mybatis-spring《/artifactId》《version》1.2.1《/version》《/dependency》《dependency》《groupId》org.springframework《/groupId》《artifactId》spring-jdbc《/artifactId》《version》${spring.version}《/version》《/dependency》 这个时候conf.xml这个配置文件已经不需要了,统一在spring.xml里面进行配置1、配置数据库连接《?xml version="1.0" encoding="UTF-8" ?》 ***隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址***《bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"》《property name="driverClassName" value="com.mysql.jdbc.Driver"》《/property》《property name="url" value="jdbc:mysql://localhost:3306/SSM_XML"》《/property》《property name="username" value="root"》《/property》《property name="password" value="root"》《/property》《/bean》《/beans》 当然这个配置可以写在properties文件里面(用到再说)2、spring引入以后主要目的就是利用IOC容器进行创建对象,没有加入spring之前SqlSessionFactory、SqlSession、UserMapper 对象的创建都是我们硬编码实现,spring就是为了解决这些问题,最后直接返回UserMapper 给我们使用。其他的事情都在配置里完成。这里面具体操作流程以后会详细分析3、创建SqlSessionFactory创建这个对象需要数据源和mapper.xml配置文件的位置《!--创建 sqlSessionFactory,给了数据源和配置路径 --》《bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"》《property name="dataSource" ref="dataSource"》《/property》《property name="mapperLocations" value="classpath:im/fenqi/study/*/mapper/*.xml"》《/property》《/bean》 4、创建UserMapper 对象(这一部分还要重点研究)需要SqlSessionFactory对象创建SqlSession对象,然后创建UserMapper 对象,所以需要SqlSessionFactory和UserMapper 接口的位置,MapperScannerConfigurer是扫描包,不要每次都创建MapperFactoryBean《!-- 创建Mapper层的对象 --》《bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"》《property name="basePackage" value="im.fenqi.study.*.mapper" /》《property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"》《/property》《/bean》 5、测试获取对象ApplicationContext context = new ClassPathXmlApplicationContext("/spring.xml");UserMapper bean = context.getBean("userMapper",UserMapper.class);List《User》 userByUser = bean.getUserByUser(null);6、这个测试还可以使用spring自带的test类@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("/spring.xml")public class springtest {@Autowiredprivate UserMapper userMapper;@Testpublic void save(){User user = new User("zw1", 20);userMapper.save(user);} 四、引入springmvc框架首先引入springmvc的JAR包《!--springMVC相关框架 --》《dependency》《groupId》org.springframework《/groupId》《artifactId》spring-web《/artifactId》《version》${spring.version}《/version》《/dependency》《dependency》《groupId》org.springframework《/groupId》《artifactId》spring-webmvc《/artifactId》《version》${spring.version}《/version》《/dependency》 这个时候需要配置web.xml,也要配置springmvc.xml1、配置web.xml添加加载spring.xml的监听器和spring文件路径《?xml version="1.0" encoding="UTF-8"?》***隐藏网址***《listener》《listener-class》org.springframework.web.context.ContextLoaderListener《/listener-class》《/listener》《context-param》《param-name》contextConfigLocation《/param-name》《param-value》classpath:spring.xml《/param-value》《/context-param》《servlet》《servlet-name》springmvc《/servlet-name》《servlet-class》org.springframework.web.servlet.DispatcherServlet《/servlet-class》《init-param》《param-name》contextConfigLocation《/param-name》《param-value》classpath:springmvc.xml《/param-value》《/init-param》《/servlet》《servlet-mapping》《servlet-name》springmvc《/servlet-name》《url-pattern》/*《/url-pattern》《/servlet-mapping》《/web-app》 配置Dispatcherservlet和springmvx.xml配置文件的位置2、配置springmvc.xml文件springmvc.xml主要配置控制器、handlerMapper、HandlerAdapter、渲染器《?xml version="1.0" encoding="UTF-8"?》***隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址******隐藏网址***《!-- 注解扫描,以包为单位 --》《context:component-scan base-package="im.fenqi.study"/》《!--创建控制器 --》《bean id="/user.do" class="im.fenqi.study.user.rest.UserController"》《property name="userService" ref="userService"》《/property》《/bean》《!--创建handlermapper --》《bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"》《/bean》《!--创建handlerAdapter --》《bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"》《/bean》《!-- 配置渲染器 --》《bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"》《property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/》《property name="prefix" value="/WEB-INF/jsp/"/》《property name="suffix" value=".jsp"/》《/bean》《/beans》 3、编写控制器控制器和配置的类型要一致public class UserController implements Controller{private UserService userService;public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {ModelAndView modelAndView = new ModelAndView();List《User》 userList = userService.getUserByUser(null);modelAndView.addObject("user", userList.get(0));modelAndView.setViewName("mypage");return modelAndView;}} 五、整合过程中出现的问题1、IOC容器。如果我使用XML配置IOC容器,自己定义一个类这个类里面的属性想用IOC容器里面的对象初始化,必须提供set/get方法。2、JSP不能使用el表达式,这个问题要解决这个问题是缺少jar包的问题要想jsp使用起来不出现问题需要添加下面的包,最上面的包之前添加过了《!-- servlet的jar包 添加《scope》provided《/scope》,因为provided表明该包只在编译和测试的时候用--》《dependency》《groupId》javax.servlet《/groupId》《artifactId》servlet-api《/artifactId》《version》2.5《/version》《scope》provided《/scope》《/dependency》《!--JSP --》《dependency》《groupId》javax.servlet.jsp《/groupId》《artifactId》jsp-api《/artifactId》《version》2.2《/version》《scope》provided《/scope》《/dependency》《dependency》《groupId》javax.servlet《/groupId》《artifactId》jstl《/artifactId》《version》1.2《/version》《/dependency》《dependency》《groupId》taglibs《/groupId》《artifactId》standard《/artifactId》《version》1.1.2《/version》《/dependency》 3、mybatis和spring的配置过程还要具体分析A:这个里面有很多种配置这一次就详细说明一下我们这里使用的sqlSessionFactory和 MapperScannerConfigurersqlSessionFactory:创建的时候需要dataSource和mapper.xml的配置文件MapperScannerConfigurer:可以整体扫描,提供基础的包名可以使用通配符,需要sqlSessionFactoryBeanName用来创建sqlSessionFactory对象再创建SqlSession对象再通过SqlSession对象创建各个mapper对象。
如何在struts1框架基础的程序上配置springmvc框架
《!-- Spring MVC配置 --》《!-- ====================================== --》《servlet》 《servlet-name》spring《/servlet-name》 《servlet-class》org.springframework.web.servlet.DispatcherServlet《/servlet-class》 《!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为-servlet.xml,如spring-servlet.xml 《init-param》 《param-name》contextConfigLocation《/param-name》 《param-value》/WEB-INF/spring-servlet.xml《/param-value》 默认 《/init-param》 --》 《load-on-startup》1《/load-on-startup》《/servlet》 《servlet-mapping》 《servlet-name》spring《/servlet-name》 《url-pattern》*.do《/url-pattern》《/servlet-mapping》《!-- Spring配置 --》《!-- ====================================== --》《listener》 《listener-class》org.springframework.web.context.ContextLoaderListener《/listener-class》《/listener》《!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 --》《context-param》 《param-name》contextConfigLocation《/param-name》 《param-value》classpath:config/applicationContext.xml《/param-value》《/context-param》
win7 iis如何配置mvc架构的网站 急急急!!! 我们公司的程序员也不会 只能自己搞了 求大神帮帮忙啊!
你的问题是服务器不认识.cshtml文件..MVC3 服务器发布:1,在服务器上安装IIS2,安装.net framework 4.03,安装MVC34,安装MVC3 语言包 和下载MVC3的时候一起下的那个(不安装也没事)5,在IIS中点击第一级目录下有个ISAPI和CGI限制选项,将选项里面的ASP.NET v4.0 xxxxx全部启用6,IIS中的应用程序池中的ASP.NET v4.0 xxxx全部启用(忘记安装.net framework 4.0后这里是不是启动状态)7,虚拟目录方式发布:添加应用程序--》添加别名,选择用用程序池(.net 4.0随便选一个),选择发布问的物理路径,最后选择线面的“连接为...”选项.进去之后使用特定用户,将服务器的管理员帐号和密码输入进去. 注:快下班了,写的有些简单..如果看不懂的话当我没说...有其他问题追问或留联系方式..
MVC和三层架构
Step1.情景概要
Hello,小伙伴们,昨天跟大家分享了JAVAEE企业级应用开发中大家耳熟能详的概念-三层架构,那么有的小伙伴可能就会有疑问了,这种代码书写方式我每天写这些web项目时都是在采用该方式呢,昌平IT培训发现那跟我们所接触的MVC有啥区别呢,借着这样的疑问,我们今天聊聊我们程序员们在开发时经常提到的MVC。
Step2.问题浅析
在开发中,我们可能总是不经意间就将三层架构与Mvc混为一谈,殊不知它俩并不是一个概念。下面我来为大家揭晓我所理解的一些“真相”。
三层架构:通常意义上的三层架构就是将整个业务应用划分为:界面层(UserInterfacelayer)、业务逻辑层(BusinessLogicLayer)、数据访问层(Dataaccesslayer)。区分层次的目的即为了“高内聚低耦合”的思想。
MVC:全名是ModelViewController,是模型(Model)-视图(View)-控制器(Controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
哈哈,看过概念感觉有点晕晕的,那具体该怎么去理解它呢?
Step3.回归代码
在步骤二中对于三层架构与MVC的概念性问题做了一个解释,当然对于我们程序员来说概念神马都是浮云,只有代码才是我们的钟爱,接下来我们来具体来看看通过代码怎么去理解两者区别。同样还是借助我们昨天的用户登录场景来分析。
在没有分层的情况下,也没有MVC概念的前提下,我们想要通过服务器端给浏览器响应一个登录页面。
更多文章:
下载高德地图2022最新版(2022别克君越上高德地图怎么更新)
2024年7月17日 16:37
英雄联盟诡术妖姬(《英雄联盟》诡术妖姬大招怎么用按R就可以了吗)
2024年5月17日 18:23
qq炫舞官方下载mac(MAC 需要装什么软件才可以玩QQ炫舞)
2024年5月21日 06:52
传奇加速器哪个好用(有百度大佬知道在国外玩传奇用什么加速器吗)
2024年7月14日 23:02
球球大作战官网下载(球球大作战电脑版在哪里下载啊,最好给我网址)
2024年5月20日 22:07
链家理财是干什么的啊,业务范围广吗?链家理财靠谱么有人用了么
2024年5月25日 23:02
手机上有什么好玩的单机三国类游戏吗?三国杀一度很火,可是从什么时候开始,你发现你不再玩三国杀了
2024年5月8日 17:39
word怎么下载2007版本的(word2007怎样下载安装)
2024年9月9日 08:45