上午:
AOP编程:
通知类、目标类、增强代码、织入过程、连接点(切入点)
前置通知、后置通知、最终通知、异常通知
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,
提高程序的可重用性,同时提高了开发的效率。
主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。
注解实现AOP编程:
在目标类之前:
@Component(“对象名”)创建对象,用于调用方法
在通知类前:
@Component(“对象名”)创建对象,用于调用方法
@Aspect:表明该类的对象是通知对象
在对应函数前:
@Before(value=“excution(* 切入点路径)”):前置通知
后三个after、afterreturn、after...类似
配置文件中扫描注解:
<context:component-scan base-package="通知类路径"/>
注解生效标签:<aop:sapectj-autoproxy>
框架:springMVC
1)spring子框架
2)使用MVC设计模式实现web层(jsp,servlet)的开发
3)MVC设计模式:实现分层开发
4)M:MODEL V:VIEW C:CONTROLLER
5)分层开发:
controller:servlet(接收用户请求,分发请求)--->service(处理业务逻辑)--->dao(数据库操作)--响应-->controller(调用视图)---->view(显示结果)
6)设计原理:
-(用户请求)->前端控制器(分发请求DispatchServlet)-->后端处理器映射器(寻找后端处理器HandlerMapping)--返回寻找到的后端处理器-->前端控制器-->后端处理器适配器(HandlerAdapter)----调用---->后端处理器(在服务端处理用户请求Controller)---处理结果(包括数据、视图)返回--->后端处理器适配器----返回处理结果---->前端控制器---处理结果--->视图解析器(把数据渲染到视图上)----返回视图--->前端控制器------>响应给用户
下午:
代码实现:
1)导入jar包
2)配置前端控制器:(web.xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--配置springMVC前端控制器-->
<!--使用前端控制器的时候会加载SpringMVC的配置文件
默认寻找的位置:/WEB-INF/servlet的名字-servlet.xml
也可以自己指定位置-->
<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:mvccfg.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
<!--配置前端控制器拦截所有请求-->
</servlet-mapping>
</web-app>
3)springMVC配置文件(mvccfg.xml):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util" xmlns:aop="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--配置映射器-->
<!--BeanNameUrlHandlerMapping:如果请求的路径跟处理器对象的名字一样,则映射成功-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--配置处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--处理器(需要自己写)-->
<!--id名必须和请求路径一样-->
<bean id="/user" class="com.hyx.handler.MyHandler"/>
<!--配置视图解析器-->
<!--需要配置响应页面的位置-->
<!--需要配置响应页面的位置
prefix:/WEB-INF/JSP/
suffix:.JSP
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/JSP/"/>
<property name="suffix" value=".JSP"/>
</bean>
</beans>
4)处理器类(有错误,小心)
package com.hyx.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.annotation.Annotation;
public class MyHandler implements Controller {
@Override
public ModelAndView handlereRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws Exception{
//调用service完成业务逻辑处理,dao完成数据库操作
//存储处理器返回的数据和视图
ModelAndView mv=new ModelAndView();
//存数据
mv.addObject("RESULT","tom");
mv.setViewName("result");
return mv;
}
}
5)入口
<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<a href="/user">请求数据</a>
<%--用户请求--%>
</body>
</html>
6)响应页面
<%--
Created by IntelliJ IDEA.
User: Administrater
Date: 2018/9/28
Time: 15:32
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>查询结果</title>
</head>
<body>
查询结果:${RESULT}
</body>
</html>