JAVASSM

JAVASSM

day1-spring&ioc
框架:web层+service层+dao层
ssh:Struts2(有安全漏洞,已弃用)+Spring+Hibernate(不够灵活)
ssm:SpringMVC+Spring+MyBatis
两方面:
ioc控制反转(di依赖注入)
aop面向切面编程
ioc控制反转的配置方式:
<?xml version="1.0" encoding="UTF-8"?>
<p:beans xmlns:p="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd ">
</p:beans>
ioc控制反转获取对象的方式:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Person p = (Person) context.getBean("person");
常用的设计模式共有23种
多例:scope="prototype"
懒加载:lazy-init="true"
全局懒加载:default-lazy-init="true"
多例情况下不需要配置懒加载
创建:init-method="init"
销毁:destroy-method="destroy"
List/Set/Map/Properties(映射)(key和value都为String的映射,可以保存在文件中)
autowire自动装载:byName/byType
全局自动装配:default-autowire="byName"
di依赖注入

day2-annotation
javap:反编译
注释:给人看的提示信息,人看了提示信息了解程序的内容
注解:给程序看的提示信息,程序看后可以根据有无注解及注解上属性的不同配置执行不同的逻辑。
注解中只有一个value的时候,可以省略等号及等号前的部分
only primitive type, String, Class, annotation, enumeration are permitted or 1-dimensional arrays thereof
元注解:给注解注解的注解
四个元注解:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
RetentionPolicy.SOURCE:此注解会被保留到源码阶段,.java中,在编译过程中被删除。
这种类型的注解通常是给编译器看的。
RetentionPolicy.CLASS:此注解将会被保留在源码阶段 和 编译阶段 ,.java和.class中,在类加载的过程中被删除。
这种类型的注解通常是给类加载器看的。
RetentionPolicy.RUNTIME:此注解将会被保留在源码阶段 、编译阶段 和 运行阶段,.java .class和内存中的字节码中都会存在。
这种类型的注解通常用来在运行阶段进行反射,控制程序运行过程。
**只有RUNTIME级别的注解才可以通过反射技术进行反射。
@Documented是否被提取到文档中
@Inherited表示被注解类的子类也会被注解
反射注解:
isAnnotationPresent(annotationClass);
getAnnotation(annotationClass);
getAnnotations();
spring注解的配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.2.xsd
">
</beans>
注解开启包扫描:<context:component-scan base-package="cn.tedu.domain"></context:component-scan>
@Component注解:如果首字母是大写,并且第二个字母不是大写,那么默认会将首字母转换为小写作为类(bean)的id。如果第二个字母是大写,那么会按照类名作为类(bean)的id。
@Component("abc")注解:可以强制性指定id
开启注解方式配置di:<context:annotation-config></context:annotation-config>
注解使用文件保存信息:<context:property-placeholder location="classpath:/data.properties" />
@Autowired自动装配注解:先按id找,再按类型找,如果都不存在则报异常。如果属性是一个接口,那么会先找bean id,如果找不到会根据属性类型寻找,会去寻找接口的实现类,
@Qualifier("dogx")强制指定id(spring提供)
@Resource(name="dogx")也可以强制指定id(java提供)
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)单例和多例
@Lazy单例时会用到懒加载
@PostConstruct加载方法
@PreDestroy销毁方法
四个相同的注解:
@Component通用的注解
@Controller控制层web层
@Service业务层service层
@Repository数据层dao层
无论使用什么技术实现dao层,对于service层来说调用的方法是一样的

day3-proxy
Golang语言:没有对象,协程,天然支持高并发
代理解决的问题:
1.减少代码的重复
2.将功能性代码和业务逻辑代码分开
两者都可以实现,但不符合设计初衷:
重写主要应用于子类覆盖父类的方法
装饰者设计模式主要用于对原有的类添加方法进行增强,而不是直接修改原来的代码
静态代理:手动创建代理者,解决了将功能性代码和业务逻辑代码分开的问题
动态代理:自动创建代理者,解决了两个问题
两种方法都可以获取到类kk.getClass()=CXK.class
jdk内置代理:
Proxy.newProxyInstance
java的动态代理是通过代理者实现和被代理者相同的接口来保证两者具有相同的方法的,如果被代理者想要被代理的方法不属于任何接口,则生成的代理者自然无法具有这个方法,也就无法实现对该方法的代理。所以java的动态代理机制是基于接口进行的,受制于要代理的方法是否有接口的支持。
cglib:
Enhancer en = new Enhancer();
en.setSuperclass(us.getClass());
en.setCallback(new MethodInterceptor() {});
优点:无论是否有接口都可以实现动态代理,使用场景基本不受限
缺点:第三方提供的动态代理机制,不是原生的,需要导入第三方开发包才可以使用

day4-aop
父类private修饰的也可以被继承,但是无法被调用
切入点表达式:
粗粒度表达式:within(cn.tedu.service.UserServiceImpl)
细粒度表达式:execution(void vn.tedu.service.UserServiceImpl.registUser(cn.tedu.domain.User))
service包下全部拦截:execution(* cn.tedu.service..*(..))
通知顺序会被xml中配置的顺序所影响
当有多个切面(aspect)时,以责任链模式执行(ABCXCBA)
五种通知类型:before、around、after-returning、after-throwing、after
前置通知:记录日志(方法将被调用)
环绕通知:控制事务和权限控制
后置通知:记录日志(方法已经成功调用)
异常通知:异常处理和控制事务
最终通知:记录日志(方法已经调用,但不一定成功)
spring自动为目标对象生成代理对象,默认情况下,如果目标对象实现过接口,则采用java的动态代理机制,如果目标对象没有实现过接口,则采用cglib动态代理。开发者可以可以在spring中进行配置,要求无论目标对象是否实现过接口,都强制使用cglib动态代理。
通用切入点:其他的调用mm()即可
@Pointcut("execution(* cn.tedu.service.*.*(..))")
public void mm() {}
转换成list:Arrays.asList(privs)
把调用接口转成调用实现类:
MethodSignature ms = (MethodSignature) pjp.getSignature();
// 获取的默认是接口的方法,需要获取的是实际运行时调用的方法
Method method = ms.getMethod();
// 获取目标对象
Object targetObj = pjp.getTarget();
// 获取实际调用的方法
Method instanceMethod = targetObj.getClass().getMethod(method.getName(), method.getParameterTypes());

day5-threadlocal&springjdbc
编译时是Object,运行时是String:
Object o="abc";
System.out.println(o);
编译时是接口,运行时注入变成实现类:
@Autowired
private IUserService ius;
进程:正在内存中执行的程序
线程:进程的一个单元,在代码调用方法时执行
线程并没有真正提高代码的执行效率,但是提高了利用率
造成线程安全隐患三个条件:有多条线程,有共享资源,有写操作时,去掉三者之一就可以避免线程安全隐患
有多条线程:通过加锁(Lock)(synchronized)解决
有共享资源:通过本地线程变量(ThreadLocal)解决
有写操作时:以线程通信来共享资源(新思想),以共享资源来通信(旧思想)
jdbc:java操作关系型数据库的api
c3p0:jdbc每次都要创建关闭连接,很消耗资源,所以引入了c3p0连接池
xml配置方式:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql//10.8.24.191/mydb2</property>
<property name="user">root</property>
<property name="password">root</property>
</default-config>
</c3p0-config>

转载于:https://www.cnblogs.com/chaunceysun/p/11247231.html

java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)

08-21
熟悉项目开发过程中SSM框架、JSP、Mysql使用,知道各技术之间的如何衔接; 考虑到部分学生只需要学习前台(买家)或是后台(后台),故将电商系统分为电商系统前台和电商系统后台两个项目, 当前课程包含电商系统前台和电商系统后台 该课程主要涉及到的技术有:  项目涉及的技术:  1、前端:jsp、css、javascript、jQuery(js框架)、bootstrap框架  2、后台:Spring MVC、Spring、Mybatis框架、javaMail进行邮件发送、jstl 、jstl自定义分页标签、代码生成器等  3、数据库:Mysql  4、服务器:Tomcat 项目开发涉及的功能: 1、项目以及数据库搭建 2、用户登录、退出 3、用户注册、邮件发送、以及用户信息激活 4、首页商品信息页面搭建以及查询功能实现 5、查询商品明细 6、加入商品至购物车、删除、更新、清除购物车商品信息 7、确认订单信息 8、订单页面搭建以及下订单功能实现 9、查询我的购物车以及订单信息 10、商品明细查看,商品修改,商品下架 11、商品类型管理 12、订单管理 13、代码机器人使用等等 其他实战项目: java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目) https://edu.csdn.net/course/detail/25771 java项目之oa办公管理系统(java毕业设计) https://edu.csdn.net/course/detail/23008 java项目之hrm人事管理项目(java毕业设计) https://edu.csdn.net/course/detail/23007 JavaWeb项目实战之点餐系统前台 https://edu.csdn.net/course/detail/20543 JavaWeb项目实战之点餐系统后台 https://edu.csdn.net/course/detail/19572 JavaWeb项目实战之宿舍管理系统(Java毕业设计含源码) https://edu.csdn.net/course/detail/26721 JavaWeb项目实战之点餐系统全套(前台和后台) https://edu.csdn.net/course/detail/20610 java项目实战之电子商城后台(java毕业设计SSM框架项目) https://edu.csdn.net/course/detail/25770 java美妆商城项目|在线购书系统(java毕业设计项目ssm版) https://edu.csdn.net/course/detail/23989 系统学习课程: JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10 https://edu.csdn.net/course/detail/26941 Java Web从入门到电商项目实战挑战万元高薪(javaweb教程) https://edu.csdn.net/course/detail/25976 其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

java项目实战之电子商城后台(java毕业设计SSM框架项目

08-21
熟悉项目开发过程中SSM框架、JSP、Mysql使用,知道各技术之间的如何衔接; 该课程主要涉及到的技术有:  项目涉及的技术:  1、前端:jsp、css、javascript、jQuery(js框架)、bootstrap框架  2、后台:Spring MVC、Spring、Mybatis框架、javaMail进行邮件发送、jstl 、jstl自定义分页标签、代码生成器等  3、数据库:Mysql  4、服务器:Tomcat 项目开发涉及的功能: 1、项目以及数据库搭建 2、用户登录、退出 3、用户注册、邮件发送 4、首页商品信息页面搭建以及查询功能实现 5、商品明细查看,商品修改,商品下架 7、商品类型管理 8、订单管理 9、代码机器人使用等等 其他实战项目: java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目) https://edu.csdn.net/course/detail/25771 java项目之oa办公管理系统(java毕业设计) https://edu.csdn.net/course/detail/23008 java项目之hrm人事管理项目(java毕业设计) https://edu.csdn.net/course/detail/23007 JavaWeb项目实战之点餐系统前台 https://edu.csdn.net/course/detail/20543 JavaWeb项目实战之点餐系统后台 https://edu.csdn.net/course/detail/19572 JavaWeb项目实战之宿舍管理系统(Java毕业设计含源码) https://edu.csdn.net/course/detail/26721 JavaWeb项目实战之点餐系统全套(前台和后台) https://edu.csdn.net/course/detail/20610 java项目实战之电子商城后台(java毕业设计SSM框架项目) https://edu.csdn.net/course/detail/25770 java美妆商城项目|在线购书系统(java毕业设计项目ssm版) https://edu.csdn.net/course/detail/23989 系统学习课程: JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10 https://edu.csdn.net/course/detail/26941 Java Web从入门到电商项目实战挑战万元高薪(javaweb教程) https://edu.csdn.net/course/detail/25976 其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值