ssm复习知识
前端核心控制器是在web.xml中配置的DispatcherServlet类,在这里也可以配置springmvc的属性加载文件spring.mvc的位置,设置它的启动优先级(load-on-startup),可以在web.xml中解决post乱码问题(CharacterEncodingFilter类),一般会设置为utf-8,如果设置拦截请求为“/”,那么会拦截除了jsp外的所有的请求,这时候就需要设置静态属性文件的加载,可以在spring.mvc中去设置。
在springmvc中可以加载属性文件,由于公司这边在设计的时候只使用了一台服务器,其他的服务都是放在虚拟机中的,所以在属性文件里面可以设置虚拟机的ip值,也可以在sping.xml中配置扫描器(context:component-scan),配置注解驱动加载(mvc:annotation-driven)这个配置了之后对于处理器映射器和处理器适配器都可以不再配置。然后在可以配置视图解析器(InternalResourceViewResolver类),在视图解析器这里可以设置前置和后置,这样的话就可以将返回值设置为字符串类型,一般是前置设置为web-inf/jsp,后置设置为.jsp,对于静态资源(mvc : resources)的映射,可以直接在web-inf后面加上js和css(location属性),然后将相关的文件放在其中(mapping属性),由于在项目中使用了dubbo,所以需要在文件中引入dubbo的服务,在controller层一般是属于消费层,在这里可以设置它的应用名称(是哪一个模块就写哪一个模块,方便于去查找),设置登记的相关协议,也就是注册中心是(zookeeper),还有他的地址,也就是ip和端口号,还需要设置引用的接口号的全站路径,对他设置一个id值,一般为接口名,首字母小写;如果在这里还有文件上传的操作(CommonsMultipartResolver类),也可以在这里定义一下它的编码格式和上传文件的 大小。
在controller层一般会使用到的注解有controller(表明他是一个controller层),autowired(将service层的内容注入进来),requestmapping(请求路径),responseBody(设置返回参数类型为json数据),requestparam(设置请求参数,可以设置一个默认值),配置文件里面的内容要加载就要使用value注解(用${id}来引用)
在service层中的web.xml文件重要就是要加载spring容器,也就是spring的配置文件 (文件会包含有dao层的、service层的、事物层的),配置spring的监听器(ContextLoaderListener类),
在dao的配置文件中需要加载数据库连接池的配置文件(DruidDataSource类,需要配置url地址(一般是jdbc:mysql://ip:3306/数据库名/编码方式),加载驱动(这个一般是在mysql包中去找jdbc的driver驱动),用户名,密码),然后可以加载sqlsessionfactorybean,让spring去管理sqlsessionfactory,这就涉及到了spring和mybatis的整合,可以设置数据库连接池的连接,可以加载mybatis的全局配置文件,里面可一直使用表头,还可以设置数据库的连接类型,然后就是需要加载mapper文件了(MapperScannerConfigurer类)。
在dao层中,我们是使用反向代理生成接口文件,mapper文件和pojo文件的(只是对于单表查询的id和非id的,对于多表查询的,需要自己手动书写),在dao接口中没有添加注解,生成了就直接复制过来就完了。就我查看的,在mapper文件里面需要有namespace,也就是权限定名,也需要指定是哪一个pojo类,然后会将数据库里面表结构的属性会表示出来,类型也有,类型里面会涉及到的有where标签,foreach标签,if标签(可以省略逗号),when标签(可以省略and),include标签
在service的配置文件中,需要配置文件扫描器(context:component-scan标签),service是消息的提供者,在这里可以设置它的应用名称(是哪一个模块就写哪一个模块,方便于去查找),设置登记的相关协议,也就是注册中心是(zookeeper),还有他的地址,也就是ip和端口号,需要用dubbo协议在端口号中暴露服务,这样才能让消费者找到,还需要设置暴露的接口号的权限定名,引用他的实现类,首字母要小写,也可以设置服务超时时间(在设置的时间内如果未响应,就会抛出一个异常),不设置的话默认是1秒;
在事务的配置文件中,可以去加载数据源(DataSourceTransactionManager),也可以配置通知和切面,
在service层中,可以添加的注解为service、autowired