中国公路建设招标网站/百度助手下载
一、把我能想到的写下来:
MVC是一种设计模式。
在web开发中,为了解耦,实现轻量级开发,有经典三层构造:
[改:Web经典三层构造:
1.表现层 User Interface 主要接受用户的请求和把对应的页面响应给用户浏览器。
对应MVC中的View。
2.业务逻辑层 Business Logic Layer
对应MVC中Model的Service层,与数据库联动,增删改查。
3.数据访问层/持久层 Data Access Layer
对应MVC中Model的Dao层,提供接口支持]
[改:传统MVC]
V(View视图层),如浏览器端显示的HTTP响应与请求;
M(model)模型层,用来管理类与类之间的关系。
[处理数据逻辑,Model层分为Service层和Dao层,
Service层用来和数据库联动,放置业务逻辑代码,处置数据库的增删改查。
Dao层用来放各种接口以供调用。
C(Control)控制层,用来调用相应的构造。
这样不同功能的模块不会相互耦合。
Spring用于M层,管理类与类之间的关系,而SpringMVC则是用于C层。
SpringMVC包括以下部分:
(首先需要在pom.xml中导入各种SpringMVC有关的)
方法一:通过XML配置:
前端控制器(Front Controler), 实现Disapeter接口。
[改:继承DispatcherServlet类]
[前端控制器的作用:1.接受Web请求
2.转发到其他Web组件]
是个servlet,当用户在浏览器输入 url ,可以通过servlet mapping中的映射,编译该 ur l对应的 servlet ,进而接受HttpRequedt,响应HttpResponse。这个前端控制器可以通过 web.xml 中
<servlet id="xxxx" class="xxxx.xxxx">
</servlet><servlet-mapping id=" ">
<url-pattern>...</>
</...>
[这里还需要设置初始化参数:]
<init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></init-param>
接下来,需要交给处理器(handler),由处理器决定将请求交由哪个具体处理类进行处理,处理器是我们写的一个普通的类。在处理器之前,需要处理器映射器和处理器适配器。是在applicationContext.xml中通过声明Bean。
<bean id="xxxx" class="handler">
处理器的适配器的作用就是将需要实现的功能提取出来。
接下来还需要视图解析器,将逻辑视图(是一个字符串)转换为物理视图,(通常是JSP)进而返还给 HttpResponse 响应。
JSP:Java Server Page,运行在服务器端的 Java 代码,用 JTEL 和 el 表达式代替了 Java 部分。
需要Dao层、service层、Po层(持久层)。
方法二:通过注解配置
需要在 applicationContext,xml 中
scan.package(xxx.xxx)
扫描…
@Servlet ("/......")
在类上使用注解 @Controler,它将会被Spring容器识别为控制器。
@Autowired 自动装配。
@Conpent???
二、复习后的补充:
在 web.xml 中用<servlet >和<servlet-mapping>
来声明前端控制器,它继承了DispatcherServlet类,可以通过url地址映射到该类。
接下来需要 处理器 ,需要写一个普通的类showItemsController,并且它需要实现Controller接口,覆写其**HandleRequest方法,返回ModelAndView,**可以通过在applicationContext.xml中声明Bean的方法装配它:
public ModelAndView HandleRequest(HttpRequest req,HttpResponse res)
{
ModelAndView moandv=new ModelAndView();
moandv.addObject(key,value);
moandv.setModelAndView("xxxx.jsp");
}
[改:第二个方法是setViewName(“xxx.jsp”);
第一个方法相当于
request.setAttribute(key,value);
第二个方法相当于
request.getRequestDispatcher(“xxxx.jsp”).forward(request,response);
会跳转到该JSP页面,并做key,value的存储。
]
<bean id="showItemsController class="xxxx.xxxx">
</...>
其中key,value在JSP中有用到。
这里返回的视图ModelAndView是逻辑视图,只是字符串,需要解析为物理视图,需要在applicationContext.xml中配置视图解析器。
[
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property="viewClass" value="org.springframework.web.servlet.view.JstView"/>
<property="prefix" value="/myjsps/">
<property="suffix" value=".jsp">
( InternalResourceViewResolver类中有getViewClass方法。因此可以通过<property>
赋值。
还可通过前缀、后缀属性赋值,这样在处理器类中的setViewName(“xxxx”)传入的参数不需要前后缀了。)
]
需要处理器适配器和映射器,使之可以处理HttpRequest和HttpResponse。
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter/"><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>