发表于: 2020-05-30 22:20:09

1 1529


今天完成的事情:

1. 完成了假数据


收获:

1. 学习 springmvc

[servlet-name]-servlet.xml 文件

配置文件扫描

Context:component-scan

 

前置概念:

BeanDefinitionParser

在启动 SpringMVC 项目加载 spring.xml 的时候会注册一些解析器:

    @Override
   
public void init() {
        registerBeanDefinitionParser
("property-placeholder", new PropertyPlaceholderBeanDefinitionParser());
        registerBeanDefinitionParser
("property-override", new PropertyOverrideBeanDefinitionParser());
        registerBeanDefinitionParser
("annotation-config", new AnnotationConfigBeanDefinitionParser());
        registerBeanDefinitionParser
("component-scan", new ComponentScanBeanDefinitionParser());
        registerBeanDefinitionParser
("load-time-weaver", new LoadTimeWeaverBeanDefinitionParser());
        registerBeanDefinitionParser
("spring-configured", new SpringConfiguredBeanDefinitionParser());
        registerBeanDefinitionParser
("mbean-export", new MBeanExportBeanDefinitionParser());
        registerBeanDefinitionParser
("mbean-server", new MBeanServerBeanDefinitionParser());
   
}

 

BeanDefinitionParser spring 启动的时候必须要记载的默认 bean 定义解析器。用来处理顶级标签(即 <beans/> 的直接子标签,比如 context:component-scan)的接口,可以通过实现它来把自定义的标签转化为 BeanDefinition 类。

其接口方法定义如下:

public interface BeanDefinitionParser {
    BeanDefinition
parse(Element element, ParserContext parserContext);
}

处理 comoonent-scan 标签的实现就是 ComponentScanBeanDefinitionParser,以处理这个标签为例,其中 element 就包含了从 xml 文件中解析出来的标签参数数据,而 parserContext 就负责把这些参数转化为 beanDefinition 对象并且注册到 spring 容器。

 

springmvc中的注解:

@Component:这是一个 spring 的基础注解类,可以用来修饰其他的注解。在系统启动的时候会被自动扫描,添加到 bean 工厂中(不再需要 xml 配置 bean),

spring 中有 @Service @Controller @Repository 是被 @Component 所注解的。

作用:将被注释的类注入到 spring 容器进行管理。

@Service 作用于业务逻辑层

@Repository 作用于持久层,与数据库相关的操作(dao

@Controller  作用于表现层,进行前端请求的处理、转发、重定向。调用 Service 层方法。(SpringMVC 注解)

 

 


遇到的问题:

1. jsp 页面插入数据失败

前置知识:头文件参数

json-taglib

依赖:(导入这个依赖会遇到一点问题,坑乎有解决方法)

<!--jsp假数据依赖-->

<dependency>

<groupId>atg.taglib.json</groupId>

<artifactId>json-taglib</artifactId>

<version>0.4.1</version>

</dependency>

 

头文件:

<%@taglibprefix="json"uri="http://www.atg.com/taglibs/json"%>

 

实际使用中会遇到的问题:

如果仅含向上述头文件的 jsp 页面传递参数的话会遇到中文乱码、传递的参数不显示的问题。

 

解决方法:

添加以下头文件

<%@pagelanguage="java"pageEncoding="utf-8"isELIgnored="false"%>

 

解析:

pageEncoding 会重新编码 jsp 文件本身。除此之外我们还见过 contentType="text/html;charset=UTF-8" 这种属性。

Jsp 要经过多次编码:

第一次:.jsp 编译为 .java 文件的时候会根据 pageEncoding 的设定读取 jsp,此时的设定关系着中文是否乱码。

第二次:由 .java 文件编译为 .class 文件的时候,不论源文件是什么编码格式 javac 都是用 utf-8 的编码方式读取 java 源码。

第三次:在被应用服务器(tomcat、resin···)载入与执行输出结果的时候 contentType 里面的 charset 参数就开始起作用了。

isELIgnored 标签决定着页面的中的表达式是否会被当成字符串处理。

不然哪来容器试可以对这些参数进行设置的,但是还是自己设置一下比较好,有时候可能会对自己造成困扰。


明天的计划:

1. dao



返回列表 返回列表
评论

    分享到