nw185最佳实践之架构搭建_第1页
nw185最佳实践之架构搭建_第2页
nw185最佳实践之架构搭建_第3页
nw185最佳实践之架构搭建_第4页
nw185最佳实践之架构搭建_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Nw185最佳实践之架构篇讲师:齐毅

课程内容SpringMVC介绍与基本用法Spring+MyBatis整合MVCMVC是一种使用MVC(ModelViewController模型-视图-控制器)设计创建Web应用程序的模式:

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。

通常模型对象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的部分。

通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分。

通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。Struts2中Action的作用Login.html<formaction=“index!toIndex.action"method="post"/>

用户名:<inputname=“user.username"value="qiyi"/> ...</form>Index.ActionpublicclassIndexAction{ privateUseruser

;//接收输入 privateUserServiceuserService; publicStringtoIndex(){ //记录日志

userService.log(username);//调用Service

return“index”;//返回视图 }}Strtus2.xml<actionname="index"class="com.bjsxt.IndexAction"> <resultname="index"type="redirect">/index.html</result></action>我的第一个控制器IndexController@Controller@RequestMapping(“/user")publicclassIndexController{

@RequestMapping(“/login”) publicStringlogin(Useruser){ userService.log(username); return“redirect:/index.html"; }}Login.html<formaction=“/user/login"method="post"/>

用户名:<inputname="username"value="qiyi"/> ...</form>IndexAction解释Controller标注说明这是一个控制器,控制器的作用是接收参数、处理业务、返回视图,这与StrutsAction极为相似RequestMapping(“/user”)

说明这个Controller映射到/user路径下RequestMapping(“/login”)

说明将方法映射到/user/login请求附带参数会自动被映射到login方法的同名参数中return"redirect:/index.html";

使用redirect跳转到/index.html,

使用请求派发可以直接写return"/index.html"或"forward:index.html"打开浏览器访问下面地址

?username=admin

搭建工程1.新建”Nw185”WebProject2.将教师给的所有jar复制到web-inf/lib下2.在web.xml配置SpringMVC核心DispatcherServletWeb.xml<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext*.xml</param-value> </init-param></servlet><servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern></servlet-mapping>在src下新建applicationContext.xml文件,配置SpringMVCapplicationContext.xml<beansxmlns=""xmlns:context=""xmlns:xsi=""xmlns:tx=""xmlns:mvc=""xsi:schemaLocation="

"><!----><ponent-scanbase-package="com.bjsxt.nw185"><ponent-scan><mvc:annotation-driven/><mvc:default-servlet-handler/>解决请求中的中文乱码Web.xml中增加下列代码<filter> <filter-name>encodingFilter</filter-name> <filter-class>

org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param></filter><filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>解决输出时的中文乱码applicationContext.xml<beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <propertyname="messageConverters"> <list> <beanclass="org.springframework.http.converter.StringHttpMessageConverter"> <propertyname="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </list> </property></bean>注意:这段配置必须放在<mvc:annotation-driven/>之前才能生效打印SQL日志我们在src下新建pertiesLpertieslog4j.rootLogger=DEBUG,CONSOLElog4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%5p[%13F:%L]-%m%n.springframework=DEBUG.ibatis=DEBUGmon.jdbc.SimpleDataSource=DEBUGmon.jdbc.ScriptRunner=DEBUG.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG配置MyBatis在applicationContext.xml中,定义数据源applicationContext.xml<!--定义数据源--><beanid="myDataSource"class="mons.dbcp.BasicDataSource"> <propertyname="driverClassName"value="oracle.jdbc.driver.OracleDriver"> </property> <propertyname="url"value="jdbc:oracle:thin:@localhost:1521:orcl"></property> <propertyname="username"value="scott"></property> <propertyname="password"value="tiger"></property></bean>配置SqlSessionFactory声明SqlSessionFactory与SqlSessionTemplate类applicationContext.xml<!--定义SqlSessionFactory工厂--><beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"> <propertyname="dataSource"ref="myDataSource"></property> <propertyname="mapperLocations"value="classpath:mybatis/*.xml"/></bean><!--配置Mapping扫描--><beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"> <propertyname="basePackage"value="com.bjsxt.nw185"/></bean>SqlSessionFactory介绍SqlSessionFactory是Spring对Mybatis的托管类,架构初始化时,spring会通过SqlSessionFactory初始化MyBatis。SqlSessionFactory有使用两个常用参数:dataSource:数据源mapperLocations:classpath:mybatis/*.xml MyBatis配置文件地址,配置是扫描mybatis包下所有的xml文件定义事务管理器定义事务管理器applicationContext.xml<!--定义事务工厂--><beanid="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <propertyname="dataSource"ref="myDataSource"/></bean><!--使用注解管理实务--><tx:annotation-driventransaction-manager="transactionManager"/>事务管理器TransactionManagerorg.springframework.jdbc.datasource.DataSourceTransactionManager

这个类为我们开发数据库应用时提供了事务方面的支持。<tx:annotation-driventransaction-manager=“transactionManager”/>

代表使用Annotation方式进行配置,不再使用原有的配置式至此,SSM整合配置完成利用SM开发CRUD操作实现Nw185“设备类型”增删改查创建T_GOODSTYPE表createtableT_GOODS_TYPE(GOODSTYPE_IDNUMBER(38)notnull,GOODSTYPE_NAMEVARCHAR2(32)notnull);altertableT_GOODS_TYPEaddconstraintPK_GTIDprimarykey(GOODSTYPE_ID);createsequenceSEQ_GOODSTYPEminvalue1maxvalue99;创建实体类GoodsTypepublicclassGoodsType{ privateIntegergoodsTypeId; privateStringgoodsTypeName; publicIntegergetGoodsTypeId(){ returngoodsTypeId; } publicvoidsetGoodsTypeId(IntegergoodsTypeId){ this.goodsTypeId=goodsTypeId; } publicStringgetGoodsTypeName(){ returngoodsTypeName; } publicvoidsetGoodsTypeName(StringgoodsTypeName){ this.goodsTypeName=goodsTypeName; }}创建DAO接口GoodsTypeDAOpublicinterfaceGoodsTypeDAO{ publicList<GoodsType>findAll(); publicvoidsave(GoodsTypegt);}配置GoodsTypeDAO中的实现Mybatis/goodstype.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.bjsxt.nw185.dao.GoodsTypeDAO"> <resultMaptype="com.bjsxt.nw185.entity.GoodsType"id="goodsTypeMapping"> <idproperty="goodsTypeId"column="goodstype_id"/> <resultproperty="goodsTypeName"column="goodstype_name"/> </resultMap> <selectid="findAll"resultMap="goodsTypeMapping"> select*fromt_goods_type </select>

<insertid="save"parameterType="com.bjsxt.nw185.entity.GoodsType"> insertintot_goods_type(goodstype_id,goodstype_name)values(seq_goodstype.nextval,#{goodsTypeName}) </insert></mapper>单元测试类GoodsTypeDAOTest@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath*:applicationContext*.xml"})publicclassGoodsTypeDAOTest{ @Resource privateGoodsTypeDAOgoodsTypeDAO=null; @Test publicvoidtestFindAll(){ Listlist=goodsTypeDAO.findAll(); System.out.println(newGson().toJson(list)); }

@Test publicvoidtestSave(){ GoodsTypegt=newGoodsType(); gt.setGoodsTypeName("测试"); goodsTypeDAO.save(gt); }}开发GoodsTypeServiceGoodsTypeService@Service@Transactional(rollbackFor=Exception.class)publicclassGood

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论