restFul风格:
请求参数和参数回显:
model--modelMap--linkedhashmap
model是精简版
转发和重定向:
中文乱码解决:web.xml中加入下面这是spring为我们提供的过滤器
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
JSON:
前后端分离时代,后端部署接口,提供数据:
JSON是一种轻量级的数据交换格式,目前使用特别广泛。
采用完全独立于编程语言的文本格式来存储好表示数据。
JSON键值对是用来保存javascript对象的一种方式,
Ajax:
$("#btn-create-order").click(function() {
$.ajax({
url: "/orders/create",
data: $("#form-create-order").serialize(),
type: "POST",
dataType: "JSON",
success: function(json) {
if (json.state == 200) {
alert("创建订单成功!");
console.log(json.data);
} else {
alert("创建订单失败!" + json.message);
}
},
error: function(xhr) {
alert("您的登录信息已经过期,请重新登录!HTTP响应码:" + xhr.status);
location.href = "login.html";
}
});
});
拦截器:
是springmvc框架自己的,只会拦截控制器方法,
实现拦截器:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class TestInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("afterCompletion方法在控制器的处理请求方法执行完成后执行,即视图渲染结束之后执行");
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle方法在控制器的处理请求方法调用之后,解析视图之前执行");
}
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle方法在控制器的处理请求方法调用之后,解析视图之前执行");
return false;
}
}
拦截器配置:
<!-- 配置拦截器 -->
<mvc:interceptors>
<!-- 配置一个全局拦截器,拦截所有请求 -->
<bean class="interceptor.TestInterceptor" />
<mvc:interceptor>
<!-- 配置拦截器作用的路径 -->
<mvc:mapping path="/**" />
<!-- 配置不需要拦截作用的路径 -->
<mvc:exclude-mapping path="" />
<!-- 定义<mvc:interceptor>元素中,表示匹配指定路径的请求才进行拦截 -->
<bean class="interceptor.Interceptor1" />
</mvc:interceptor>
<mvc:interceptor>
<!-- 配置拦截器作用的路径 -->
<mvc:mapping path="/gotoTest" />
<!-- 定义在<mvc: interceptor>元素中,表示匹配指定路径的请求才进行拦截 -->
<bean class="interceptor.Interceptor2" />
</mvc:interceptor>
</mvc:interceptors>
--------------------------------------------------
ssm注解记录:
spring常用注解:
@Component注解
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注,
属性:value --- 用于指定bean的id。如果不写该属性,id的默认值是当前类名,且首字母改为小写。
@Reposityory(dao层)
@Service(业务层)
@Controller(控制层),
这4个的功能是一样的,都表示将某个类祖册到bean中,装配bean,
@AutoWired:自动装配,放在一个类中的“类属性“”变量上面,如果不能识别,
加上@Qualifier(value=""),也可以放在set方法上面
@Bean:用于把当前方法的返回值作为bean对象存入Spring的IOC容器中。
@Configuration,指定当前类是一个配置类,作用和xml配置文件相同
@ComponentScan(basePackages = "com.zhagn"),配置注解要扫描的包
@PropertySource("classpath:JdbcConfig.properties"):加载配置文件
@MapperScan("com.cy.store.mapper")注解,以配置接口文件的位置。
@Aspect//标注这是一个切面
@Before After Around
springmvc注解:
@Controller
控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中使用@Controller ,就无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式:
(1)在SpringMVC 的配置文件中定义MyController 的bean 对象。
(2)在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。
<!--方式一-->
<bean class="com.host.app.web.controller.MyController"/>
<!--方式二-->
< context:component-scan base-package = "com.host.app.web" /
@RequestMapping
@RequestMapping的作用是建立请求URL和处理方法之间的对应关系
@RequestMapping可以作用在方法和类上
作用在类上:第一级的访问目录
作用在方法上:第二级的访问目录
@RequestMapping的属性
path-指定请求路径的URL
value属性和path属性是一样的
mthod 指定该方法的请求方式
params 指定限制请求参数的条件
headers 发送的请求中必须包含的请求头
@ResponseBody//这样他就不会走视图解析器,直接返回一个字符串
作用:@ResponseBody注解通常使用在控制层的方法上,用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter
接口转换为指定格式的数据如:json、xml等,通过Response响应给客户端。
@RequestBody:注解实现接收 http 请求的 json 数据,将 json 转换为 java 对象。
@Autowired
作用:spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
正常情况下,你在userService里面要做一个userDao的setter/getter方法,但如果你用了@Autowired,你就不需要写getter/setter方法了,只需要在UserService的实现类中声明即可,之所以不用写,秘诀就在于java的“反射机制”
@Repository
小结:
springmvc:是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级web框架,,通过把模型,视图,控制器分离,将web层进行解耦,把复杂的web应用,分成逻辑清晰的几部分,简化开发,