1.MVC(Model View Controller)模型视图控制器
(1)MVC是什么?
是一种软件架构思想,其核心思想是,要将数据处理与数据展现分开,
按照这种思想,可以将一个软件划分成三种不同类型的模块,分别是
模型,视图和控制器
模型负责数据处理(业务逻辑)、视图负责数据展现(表示逻辑)
控制器负责协调模型和视图(请求要先发送给控制器,由控制器选择对应的
的模型来处理;模型返回的处理结果也要先发送给控制器,由控制器选择对应
的视图来展现)
##(2)如何使用MVC来开发一个web应用?
使用Servlet来充当控制器,使用jsp充当视图,使用java类来充当模型
#2.实现一个简单的MVC框架(smartmvc)
框架核心:通用控制器
##注解
1.保留相关
默认保留在字节码文件里面,运行之后会被抹掉
可以使用Retention“元注解”来告诉JVM保留到运行期
2.元注解是系统提供用来解释其他注解的注解
3.指定属性名相关
默认value属性不用指定。
其他的要。并且可以添加多个属性
##课后作业:
1.MVC的优点。
优点:分层,结构清晰,耦合性低,大型项目代码的复用性得到极大的提高,开发人员分工明确,提高了开发的效率,维护方便,降低了维护成本。
缺点:简单的小型项目,使用MVC设计反而会降低开发效率,层和层虽然相互分离,但是之间关联性太强,没有做到独立的重用。
2.复习dom4j
dom4j是一个xml文件的解析器,功能强大且灵活
3.巩固今天学的注解、反射
具体项目名称:smartmvc01
反射是一个动态访问机制,可以动态访问数据,甚至是私有的。
实现步骤为:
1.加载类
Class clazz = Class.forName(className);
2.实例化
Object obj = clazz.newInstance();
3.获取所有方法
Method[] methods = clazz.getDeclaredMethods();
4.遍历所有方法
for(Method mh : methods){
System.out.println(mh);
}
注解:
注解是写框架的一个重要的步骤,
具体实现步骤:
1.新建一个Annotaion注解类,注解可以添加属性
例如;public String value();
2.在需要添加注解的实体类方法上写上注解名称
例如:@Test(name=“Sally”)
3.在java类中用反射进行访问,加载、实例化、获取方法、遍历。
ngnix
##MVC优点:
a.方便代码的维护。
注:
比如视图发生变化(修改或者增加了视图,不会影响模型的正常运行),
b.方便测试。
注:
比如,将代码写在java类里面,可以直接测试,不需要部署整个应用。
c.方便分工协作,例如,我们可以只写业务逻辑部分,并且它也是java的核心。
java:数据处理 jsp数据展现 Servler:依据请求调模型,根据响应返回视图。
框架:
高质量的软件半成品。
1.SmartMVC
(1)SmartMVC是什么?
相当于一个简易的SpringMVC,可以实现一个通用的控制器,开发人员利用该
框架,只需要写业务逻辑和表示逻辑就行。
##(2)架构
DispatcherServlet:控制器
HeadlerleMapping:映射处理器
1.如何使用smartmvc?
step1. 导包。
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
step2. 将base包复制过来。
step3. 在web.xml文件中,配置DispatcherServlet。
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>base.web.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
step4. 添加处理器。
方法前要添加@RequestMapping注解,在该注解里面添加
请求路径。
方法要返回视图名。如果是重定向,要在重定向地址前添加
"redirect:"。
step5. 添加jsp。
step6. 配置处理器。
在smartmvc.xml中,添加处理器的配置信息。
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<!--
配置处理器:
DispatcherServlet会读取该配置信息,
然后利用java反射将处理器实例化。
-->
<bean class="controller.HelloController"/>
<bean class="controller.LoginController"/>
</beans>