== 学习笔记,后续持续更新==
ssm:spring + springMVC MVC三层架构 + mybatis
JavaSE:java基础学习
JavaWeb:java网站设计
框架:研究官方文档,锻炼自学能力,锻炼笔记能力,锻炼项目能力
大数据学习基于Spring的前后端建议:Spring + Spring MVC + Spring Boot + Spring Cloud + Linux + Vue;
课程要求:
MVC框架
MVC层 | 描述 |
---|---|
Model(模型) | 数据模型,提供要展示的数据,因此包含了数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都是分离来:Value Object(数据Dao)和服务层(行为Service)。也就是模型提供了模型的数据查询和模型数据的状态 |
View(视图) | 负责进行模型的展示,一般是我们见到的用户界面,客户想要看到的东西 |
Controller(控制器) | 接收用户请求,委托给模型(model)进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示,也就是说控制器(Controller)在MVC框架中充当调度员的工作 |
最典型的MVC框架
JSP + servlet + JavaBean
JSP:属于视图层的内容
servlet:用于转发,重定向
Model1时代
早期开发通常采用两层结构完成:视图层和模型层
优点:架构简单,比较适合小型项目开发
缺点:JSP职责不单一,职责过重,不便于维护
Model2时代
SpringMVC是SpringFramework的一部分,是基于Java实现的MVC的轻量级Web框架
Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。从Spring2.5开始,使用Java5或者以上版本的用户可以采用基于注解的controller声明方式。
SpringMVC框架像许多其他的MVC框架一样,以请求为驱动,围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet(它继承自HttpServlet基类)
使用SpringMVC必须配置的三大组件:处理器映射器,处理器适配器,视图解析器
通常,我们只需要手动配置视图解析器即可,而处理器映射器和处理器适配器只需要开启注解驱动即可,这样可以省去大段的xml配置
<servlet>
<servlet-name>spring-mvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocatonparam-name>
<param-value>classpath:param-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>spring-mvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp"/>
<property name="suffix" value=".jsp"/>
bean>
<bean id="/hello" class="com.fuxi.spring.Collector.HelloController"/>
<build>
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
<filtering>falsefiltering>
resource>
<resource>
<directory>src/main/resourcesdirectory>
<includes>
<include>**/*.propertiesinclude>
<include>**/*.xmlinclude>
includes>
<filtering>falsefiltering>
resource>
resources>
build>
在pom.xml文件中引入相关的依赖:包括Spring核心框架库、SpringMVC、Servlet、JSTL等,当然,如果在父类pom.xml已经引入了,则可以无需引入
配置web.xml
添加SpringMVC配置文件
过程
完成上述配置,整个Spring-MVC-Annotation的基本环境配置就已经完成了,这时候就可以开始进行Controller层、Service层、Dao(Mapper)层的业务开发了。
Spring-MVC开发中常用注解
注解 | 应用 | 描述 |
---|---|---|
@Component | 组件 | |
@Repository | 常作为dao层容器注解 | |
@Service | 常作为Service层注解 | |
@Controller | 常作为Controller层注解 | @Controller代表这个类会被Spring托管,被这个注解的类中所有的方法,如果返回的是String,并且没有具体页面可以跳转,那么就会被视图解析器解析 |
Restfult是一个用于做资源定位和资源操作的风格。它既不是标准,也不是协议,仅仅是一种风格,基于这种风格开发的软件可以更简洁,更有层次,且更易于实现缓存等机制。
http://127.0.0.1/item/queryItem.action?id=1 查询,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或PSOT
http://127.0.0.1/item/1 查询,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 删除,
ServletAPI | 描述 |
---|---|
HttpServletResponse | 通过HttpServletResponse实现输出 |
HttpServletResponse | 通过HttpServletResponse实现重定向 |
HttpServletResponse | 通过HttpServletResponse实现转发 |
示例:
通过return实现跳转和重定向:
示例:
ajax三要素:
//post模式
$.post({
url: window.location.href.replace(window.location.pathname, "")+"/a1",
data: {"":$("#username").val()},
success:function (data) {
console.log("成功获取到服务器响应");
alert(data);
},
error:function(){
alert("未获取到数据的的响应")
}
})
//get模式
$.get({
url: window.location.href.replace(window.location.pathname, "")+"/a1",
data: {"":$("#username").val()},
success:function (data) {
console.log("成功获取到服务器响应");
alert(data);
},
error:function(){
alert("未获取到数据的的响应")
}
})
SpringMVC可以很好的支持文件上传,但因为SpringMVC并没有装配MultipartResolver,因此默认情况下不能处理文件上传工作,如果想要使用Spring的文件上传功能,需要在上下文中高配置MultipartResolver
前端表单要求:为了能上传文件,必须将表单的method设置为POST,并将enctype设置为multipart/form-data,只有在这样配置下,浏览器才会把用户选择的文件以二进制数据的方式发送给服务器
<form action="" enctype="multipart/form-data" method="post">
<input type="file" name="file"/>
<input type="sumbit"/>
form>