发表于: 2017-10-24 23:20:28
2 679
今天完成的事
以Student业务为例分层分析:从底层开始
1.DAO层(数据访问层):DAO层主要的工作就是负责与数据库进行联络,将数据持久化(增,删,改,查)
包含的内容:
Student (POJO)
StudentMapper (DAO)
StudentMapper.xml (Mybatis)
jdbc.properties(数据库配置文件)
2.Service层:主要负责业务模块的逻辑应用,对数据层的操作和处理
包含的内容:
StudentService (interface)
StudentService (implment)
*Util(各种封装的工具类:cookie,session,token,Md5,Des,log)
dateTag(时间格式转换)
dateTag.tld
log4j.properties
3.control层:负责于与用户交互 对用户的一系列请求做出处理(验证,拦截等等)
包含的内容:
Studentcontroller(控制器)
4.view层:此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示
包含内容:
*.jsp(前端页面)
css&jss(前端样式以及效果)
tiles.xml(tiles框架)
各层联系:Service层建立在DAO层之上,又建立在Controller层之下的,所以service会调用DAO(mapper)层的接口岁数据库操作以实现增删改查,而controller又会调用Service的接口以实现某个用户请求的功能,所以service承上启下的作用就非常明显了,在整个项目中的分量也非常重要
留一张很直观地图吧
配置文件:
1.pom.xml:Maven项目的核心文件:pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。
2.web.xml:主要是配置web项目启动时加载的信息比如<context-param/>配置参数,
<listener/>配置你的监听器,<filter/>配置过滤器,<servlet/>配置你的servlet实现。(百度知道)
内容:
配置DispatcherServlet( 前台控制器)
声明mvc的配置文件springmvc.xml的路径
引用自定义时间转换类DateTag的配置文件datetag.tld
指定spring配置文件位置
3.spring-mvc.xml(SpringMVC配置文件)
内容:
<!--启用spring的一些注解 -->
<context:annotation-config/>
<!-- 配置注解驱动 可以将request(请求)参数与绑定到controller参数上 -->
<mvc:annotation-driven/>
<!--静态资源映射-->
<mvc:resources mapping="/css/**" location="/page/t10/"/>
<!--配置视图解析器-->
<!-- tiles配置路径 -->
<!-- 自动扫包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<!-- springmvc文件上传需要配置的节点, MultipartResolver 主要用来处理文件上传-->
<bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--拦截器Interceptor-->
<mvc:interceptors>
4.spring-mybatis
<!--spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @ Controller @ Service等这些注解的类,则把这些类注册为bean-->
<context:component-scan base-package="com.task4.jnshu"/>
<!--加入jdbc.properties-->
<!--配置连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!-- 二、创建mybatis会话工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:mapping/*.xml"></property>
<!--MapperScannerConfigurer 可以不用再写映射关系的命名空间,扫描Mapper接口-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--执行环绕通知的类-->
<bean id="LogAdvice" class="com.task4.jnshu.util.LogAdvice">
总结:之前一直对SSM的逻辑很模糊,今天特意整理一下,如果以自己写的还看不懂,那就看看这个链接,我自己也参考了这篇文章的格式
http://blog.csdn.net/lutianfeiml/article/details/51864160
之后继续搞Memcached的demo
按照昨天帆哥讲的思路,继续搞
1.配置jar包
<dependency>
<groupId>com.whalin</groupId>
<artifactId>Memcached-Java-Client</artifactId>
<version>3.0.2</version>
</dependency>
2.spring配置文件中加入memcached的配置
<!--spring 集成缓存服务器(memcached) -->
<bean id="memcachedPool" class="com.whalin.MemCached.SockIOPool"
factory-method="getInstance" init-method="initialize"
destroy-method="shutDown">
<constructor-arg>
<value>memCachedPool</value>
</constructor-arg>
<property name="servers">
<list>
<value>127.0.0.1:11211</value>
</list>
</property>
<property name="initConn">
<value>20</value>
</property>
<property name="minConn">
<value>10</value>
</property>
<property name="maxConn">
<value>250</value>
</property>
<property name="maintSleep">
<value>3000</value>
</property>
<property name="nagle">
<value>false</value>
</property>
<property name="socketTO">
<value>3000</value>
</property>
</bean>
<bean id="memCachedClient" class="com.whalin.MemCached.MemCachedClient">
<constructor-arg>
<value>memCachedPool</value>
</constructor-arg>
</bean>
3.然后编写测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
public class memcachedTest {
@Autowired
private MemCachedClient memCachedClient;
@Test
public void setMemcachedServer(){
Boolean target=memCachedClient.set("1", "123456");
System.out.println("memcached 加载是否成功:"+target);
String result =(String)memCachedClient.get("1");
System.out.println("memcached 获取的结果:"+result);
}
运行测试
终于成了
遇到的问题:
无法加载memcached.properties配置文件,原因出在memcached的连接配置文件池占位符不能成功加载memcached.properties中的配置
我师兄也遇到过这个问题,他的解决方法是手填,那我也就先填上吧
明天的计划:
找一个memcached的工具类使用,修改service中的代码,并初步压测查看效果
准备小课堂
收获:SSM的代码逻辑清晰了许多,至于memcached,我觉得我还是需要再找些资料看看还是有点蒙
任务进度:任务6步骤2
任务开始时间:2017-10-21
预计demo时间:2017-10-26
是否有延期风险:暂无
禅道:http://task.ptteng.com/zentao/project-task-276.html
评论