美文网首页
04 web开发

04 web开发

作者: wshsdm | 来源:发表于2019-01-01 16:13 被阅读0次

四、Web开发

1、简介

使用SpringBoot;

1)、创建SpringBoot应用,选中我们需要的模块;

2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来

3)、自己编写业务代码;

自动配置原理?

这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxx

xxxxAutoConfiguration:帮我们给容器中自动配置组件;

xxxxProperties:配置类来封装配置文件的内容;

2、SpringBoot对静态资源的映射规则;

@ConfigurationProperties(prefix

="spring.resources", ignoreUnknownFields

=false)publicclassResourcePropertiesimplementsResourceLoaderAware{//可以设置和静态资源有关的参数,缓存时间等

WebMvcAuotConfiguration:@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistry

registry){if(!this.resourceProperties.isAddMappings())

{logger.debug("Default resource handling disabled");return;}Integer

cachePeriod

=this.resourceProperties.getCachePeriod();if(!registry.hasMappingForPattern("/webjars/**"))

{customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/").setCachePeriod(cachePeriod));}String

staticPathPattern

=this.mvcProperties.getStaticPathPattern();//静态资源文件夹映射if(!registry.hasMappingForPattern(staticPathPattern))

{customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern).addResourceLocations(this.resourceProperties.getStaticLocations()).setCachePeriod(cachePeriod));}}//配置欢迎页映射@BeanpublicWelcomePageHandlerMappingwelcomePageHandlerMapping(

ResourceProperties

resourceProperties){returnnewWelcomePageHandlerMapping(resourceProperties.getWelcomePage(),this.mvcProperties.getStaticPathPattern());}//配置喜欢的图标@Configuration@ConditionalOnProperty(value

="spring.mvc.favicon.enabled", matchIfMissing

=true)publicstaticclassFaviconConfiguration{privatefinalResourceProperties

resourceProperties;publicFaviconConfiguration(ResourceProperties

resourceProperties){this.resourceProperties =

resourceProperties;}@BeanpublicSimpleUrlHandlerMappingfaviconHandlerMapping(){SimpleUrlHandlerMapping

mapping

=newSimpleUrlHandlerMapping();mapping.setOrder(Ordered.HIGHEST_PRECEDENCE

+1);//所有  **/favicon.ico

mapping.setUrlMap(Collections.singletonMap("**/favicon.ico",faviconRequestHandler()));returnmapping;}@BeanpublicResourceHttpRequestHandlerfaviconRequestHandler(){ResourceHttpRequestHandler

requestHandler

=newResourceHttpRequestHandler();requestHandler.setLocations(this.resourceProperties.getFaviconLocations());returnrequestHandler;}}

==1)、所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;==

​ webjars:以jar包的方式引入静态资源;

http://www.webjars.org/

localhost:8080/webjars/jquery/3.3.1/jquery.js

在访问的时候只需要写webjars下面资源的名称即可org.webjarsjquery3.3.1

==2)、"/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射==

"classpath:/META-INF/resources/",

"classpath:/resources/",

"classpath:/static/",

"classpath:/public/"

"/":当前项目的根路径

localhost:8080/abc === 去静态资源文件夹里面找abc

==3)、欢迎页; 静态资源文件夹下的所有index.html页面;被"/**"映射;==

​ localhost:8080/ 找index页面

==4)、所有的 **/favicon.ico 都是在静态资源文件下找;==

3、模板引擎

JSP、Velocity、Freemarker、Thymeleaf

SpringBoot推荐的Thymeleaf;

语法更简单,功能更强大;

1、引入thymeleaf;

org.springframework.bootspring-boot-starter-thymeleaf2.1.6切换thymeleaf版本3.0.9.RELEASE2.2.2

2、Thymeleaf使用

@ConfigurationProperties(prefix

="spring.thymeleaf")publicclassThymeleafProperties{privatestaticfinalCharset

DEFAULT_ENCODING = Charset.forName("UTF-8");privatestaticfinalMimeType

DEFAULT_CONTENT_TYPE =

MimeType.valueOf("text/html");publicstaticfinalString DEFAULT_PREFIX

="classpath:/templates/";publicstaticfinalString DEFAULT_SUFFIX

=".html";//

只要我们把HTML页面放在classpath:/templates/,thymeleaf就能自动渲染;

使用:

1、导入thymeleaf的名称空间

2、使用thymeleaf语法;

<!DOCTYPE html>

成功!

这是显示欢迎信息

3、语法规则

1)、th:text;改变当前元素里面的文本内容;

​ th:任意html属性;来替换原生属性的值

2)、表达式?

Simple expressions:(表达式语法)

    Variable Expressions: ${...}:获取变量值;OGNL;

    1)、获取对象的属性、调用方法

    2)、使用内置的基本对象:

    #ctx : the context object.

    #vars: the context variables.

                #locale : the context locale.

                #request : (only in Web Contexts) the HttpServletRequest object.

                #response : (only in Web Contexts) the HttpServletResponse object.

                #session : (only in Web Contexts) the HttpSession object.

                #servletContext : (only in Web Contexts) the ServletContext object.

                ${session.foo}

            3)、内置的一些工具对象:

#execInfo : information about the template being processed.

#messages

: methods for obtaining externalized messages inside variables

expressions, in the same way as they would be obtained using #{…}

syntax.

#uris : methods for escaping parts of URLs/URIs

#conversions : methods for executing the configured conversion service (if any).

#dates : methods for java.util.Date objects: formatting, component extraction, etc.

#calendars : analogous to #dates , but for java.util.Calendar objects.

#numbers : methods for formatting numeric objects.

#strings : methods for String objects: contains, startsWith, prepending/appending, etc.

#objects : methods for objects in general.

#bools : methods for boolean evaluation.

#arrays : methods for arrays.

#lists : methods for lists.

#sets : methods for sets.

#maps : methods for maps.

#aggregates : methods for creating aggregates on arrays or collections.

#ids : methods for dealing with id attributes that might be repeated (for example, as a result of an iteration).

    Selection Variable Expressions: *{...}:选择表达式:和${}在功能上是一样;

    补充:配合 th:object="${session.user}:

   <div th:object="${session.user}">

    <p>Name: <span th:text="*{firstName}">Sebastian</span>.</p>

    <p>Surname: <span th:text="*{lastName}">Pepper</span>.</p>

    <p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p>

    </div>

    Message Expressions: #{...}:获取国际化内容

    Link URL Expressions: @{...}:定义URL;

    @{/order/process(execId=${execId},execType='FAST')}

    Fragment Expressions: ~{...}:片段引用表达式

    <div th:insert="~{commons :: main}">...</div>

Literals(字面量)

      Text literals: 'one text' , 'Another one!' ,…

      Number literals: 0 , 34 , 3.0 , 12.3 ,…

      Boolean literals: true , false

      Null literal: null

      Literal tokens: one , sometext , main ,…

Text operations:(文本操作)

    String concatenation: +

    Literal substitutions: |The name is ${name}|

Arithmetic operations:(数学运算)

    Binary operators: + , - , * , / , %

    Minus sign (unary operator): -

Boolean operations:(布尔运算)

    Binary operators: and , or

    Boolean negation (unary operator): ! , not

Comparisons and equality:(比较运算)

    Comparators: > , < , >= , <= ( gt , lt , ge , le )

    Equality operators: == , != ( eq , ne )

Conditional operators:条件运算(三元运算符)

    If-then: (if) ? (then)

    If-then-else: (if) ? (then) : (else)

    Default: (value) ?: (defaultvalue)

Special tokens:

    No-Operation: _

相关文章

网友评论

      本文标题:04 web开发

      本文链接:https://www.haomeiwen.com/subject/pxwnlqtx.html