SpringMVC之乱码解决

 

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应用,分成逻辑清晰的几部分,简化开发,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值