文档章节

Java开发框架搭建:配置文件

 纠结名字
发布于 2015/08/13 11:46
字数 3526
阅读 975
收藏 27

工欲善其事,必先利其器。我们知道,Java开发最难的部分,就是初期框架的搭建工作。本文将记录一个可用的Java开发框架的搭建过程,以期满足大多数Java项目的开发。

本项目采用Maven管理Jar包,主要技术包括:

  • MVC框架:SpringMVC

  • 数据库:MySql

  • ORM框架:Mybatis

  • 日志组件:Log4j2

  • 模板引擎:FreeMarker

  • JS库:jQuery-1.9

其它技术会随着项目的变化而增删。

一、pom.xml

以下为pom.xml中所要依赖的jar包:

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.1</version>
	<scope>test</scope>
</dependency>

<!-- servlet支持 -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
</dependency>

<dependency>
	<groupId>javaee</groupId>
	<artifactId>javaee-api</artifactId>
	<version>5</version>
	<scope>provided</scope>
</dependency>

<!-- spring jar包 -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-web</artifactId>
	<version>4.0.5.RELEASE</version>
</dependency>

<!-- spring-context-support解决以下问题: java.lang.ClassNotFoundException:org.springframework.ui.freemarker.FreeMarkerConfigurationFactory -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context-support</artifactId>
	<version>4.0.5.RELEASE</version>
</dependency>

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>4.0.5.RELEASE</version>
</dependency>

<!-- springmvc jar包 -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>4.0.5.RELEASE</version>
</dependency>

<!-- freemarker支持 -->
<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.21</version>
</dependency>

<!-- 数据源支持 -->
<dependency>
	<groupId>commons-dbcp</groupId>
	<artifactId>commons-dbcp</artifactId>
	<version>1.4</version>
</dependency>

<!-- Mybatis支持 -->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.3.0</version>
</dependency>

<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>1.2.3</version>
</dependency>

<!-- JSON -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.0</version>
</dependency>

<!-- 工具包 -->
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>3.3.2</version>
</dependency>

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>3.3.2</version>
</dependency>

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>3.3.2</version>
</dependency>

<!-- 日志 -->
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-core</artifactId>
	<version>2.1</version>
</dependency>

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-core</artifactId>
	<version>2.1</version>
	<classifier>sources</classifier>
</dependency>

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-api</artifactId>
	<version>2.1</version>
</dependency>

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-api</artifactId>
	<version>2.1</version>
	<classifier>sources</classifier>
</dependency>

二、配置web.xml

如果是一个最简单的web项目,web.xml并不是必须的,但作为一个能提供服务的web项目,web.xml充当着十分重要的角色。在web.xml中,我们主要配置资源文件的位置、Spring监听器、字符编码过滤器以及SpringMVC拦截全部请求的servlet配置。另外,web.xml还可以配置项目欢迎页,项目产生异常时跳转页,Session过期时间等。

以下为web.xml的配置情况,一些简单的配置说明都在相关节点以注释形式列出。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">
	<display-name>通用后台管理系统</display-name>
  	<!-- 
		1:指明配置文件位置,默认位置为WEB-INF,默认文件名为applicationContext.xml
		
		Q.	web.xml中classpath:和classpath*:  有什么区别?
		A. 	classpath:只会到你的class路径中查找找文件;   
			classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.
		
		Q.	位于不同目录下的配置文件,该如何定义?
		A.  src的情况,需要在web.xml中定义如下:  
			<context-param>  
				<param-name>contextConfigLocation</param-name>  
				<param-value>classpath:applicationContext.xml</param-value>  
			< /context-param>
			
			WEB-INF的情况,需要在web.xml中定义如下:  
			<context-param>  
				<param-name>contextConfigLocation</param-name>  
				<param-value>WEB-INF/applicationContext*.xml</param-value>  
			< /context-param>
		
		Q.	如何添加多个配置文件?
		A.	<context-param>   
				<param-name>contextConfigLocation</param-name>   
				<param-value>   
					classpath*:conf/applicationContext_core*.xml,   
					classpath*:conf/applicationContext_bean*.xml,   
					classpath*:conf/applicationContext_jdbc*.xml,   
					classpath*:conf/applicationContext_log*.xml   
				</param-value>   
			</context-param>
	-->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
	        classpath*:*config/*.xml
	    </param-value>
	</context-param>
	
	<!-- 
		2:初始化配置监听器
		
		ContextLoaderListener的作用在于,容器启动时自动装配applicationContext.xml(默认情况,可设置,参上)的配置信息
	 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- 
		3:字符编码拦截器,解决中文乱码问题
		
		中文编码乱码问题,是所有中国程序员最常见的问题之一。在使用SpringMVC时,尤其做ajax请求,很容易出现乱码问题。
		很多时候我们会很奇怪,明明在tomcat的server.xml中配置了<Connector URIEncoding="UTF-8" ...>,结果还是出现了乱码。
		其实,这里的配置只是对url进行了编码处理,只要是get请求,参数都是通过url传递,是不会有乱码问题的。但post请求时,
		因为参数都在请求体里,这里的编码设置并不能影响请求体编码,所以就容易出现乱码。
		
		如果是firefox浏览器,post请求会自动带上请求头信息:content-type = application/x-www-form-urlencoded; charset=UTF-8
		所以firefox下SpringMVC可能会表现良好,没有乱码问题;
		但如果是chrome浏览器,它不会设置关于编码的请求头信息:content-type = application/x-www-form-urlencoded ,
		而SpringMVC默认又是采用的ISO-8859-1解析参数,就会出现乱码
		
		解决方案:
		a.	配置请求映射时:@RequestMapping(value = "saveUserByJson", produces = { "text/json;charset=UTF-8" })
		b.	全局过滤,即以下配置,无需自己写过滤器,spring已经提供CharacterEncodingFilter
	-->
	<filter>
		<filter-name>forceEncoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>forceEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 
		4:拦截处理所有请求
		
		DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:
		a、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
		b、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);
		c、通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);
		d、通过ViewResolver解析逻辑视图名到具体视图实现;
		e、本地化解析;
		f、渲染具体的视图等;
		g、如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。
		
		可以看出,使用SpringMVC时,几乎大部分功能都是通过该servlet请求转发的。
		
		DispatcherServlet默认是以WebApplicationContext作为上下文的,默认的配置文件为[servlet-name]-servlet.xml,
		比如这里的servlet-name是spring,所以默认的配置文件应该是spring-servlet.xml,且默认情况下,这个文件应放在WEB-INF目录下。
		
		也可以通过初始化参数来设置上下文的配置文件,方式如下。
	-->
	<servlet>
		<servlet-name>spring</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
            <param-value>classpath*:*config/spring-servlet.xml</param-value>
		</init-param>
	</servlet>

	<!-- 
		5:映射拦截请求路径
		
		url-pattern配置为/,不带文件后缀,会造成其它静态文件(js,css等)不能访问。如配为*.html,则不影响静态文件的访问
	-->
	<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>

	<!-- 
		6:指定系统欢迎页
		该设置指定,当用户访问到目录时,系统依次尝试访问以下页面,直到发现可用的页面
	 -->
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>index.html</welcome-file>
		<welcome-file>default.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
	</welcome-file-list>
	
	<!-- 
		7:错误页面
		
		error-page配置用于在用户请求资源时发生错误的情况下,提供默认的页面以提示用户。比如用户请求了不存在的资源,
		如果不做设置,用户就会看到简单粗暴的404错误页面;再比如系统实现中存在漏洞,在各种条件下触发空指针异常,用户就会
		看到一大段的异常堆栈。这些都是不友好的用户体验,而error-page则帮我们实现了在指定错误下跳转到指定页面的功能。
		
		error-code指出在给定http错误码返回时,要展示给用户的页面;而exception-type则表示在系统出现某种异常时,要展示给
		用户的页面。
	 -->
<!-- 	<error-page>   -->
<!-- 		<error-code>404</error-code>   -->
<!-- 		<location>/WEB-INF/common/404.html</location>   -->
<!-- 	</error-page> -->
	
<!-- 	<error-page>   -->
<!-- 		<error-code>500</error-code>   -->
<!-- 		<location>/WEB-INF/common/500.html</location>   -->
<!-- 	</error-page> -->
	
<!-- 	<error-page> -->
<!-- 		<exception-type>java.lang.NullPointerException</exception-type>   -->
<!-- 		<location>/WEB-INF/common/nullpointer.html</location>   -->
<!-- 	 </error-page> -->
	  
	<!-- 
		8:设置session过期时长
		
		当session查出session-timeout指定的时长时,整个session就会过期。
		session-timeout的单位是分钟,所以下面的配置session会在用户3小时无操作时过期
	-->
	<session-config>
		<session-timeout>180</session-timeout>
	</session-config>
	
</web-app>

三、applicationContext.xml和spring-servlet.xml

默认情况下,我们需要在WEB-INF目录下为Spring加入一个名为applicationContext.xml的配置文件,还要为SpringMVC加入一个名为spring-servlet.xml的配置文件。但因为我们在web.xml中配置了contextConfigLocation的全局参数,Spring就会到这个参数所指定的目录查找符合条件的文件作为配置文件。

applicationContext.xml是Spring的全局配置文件,在这个文件中,我们通常会配置诸如AOP、数据库连接、通用Bean等。而spring-servlet.xml中,配置的则常常与MVC相关的内容,比如控制器、拦截器等。实际上applicationContext.xml对应的容器是spring-servlet.xml对应容器的父容器,在MVC中需要的Bean如果在无法在spring-servlet.xml中查找到,就会在上一级容器,即applicationContext.xml对应的容器中查找。

以下为applicationContext.xml的配置内容,暂时只需要配置与数据库连接相关的配置:

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	   xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
	   xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--数据库连接-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
	    <property name="url" value="jdbc:mysql://localhost:3306/tangsystemdb?useUnicode=true&amp;characterEncoding=UTF-8" />
	    <property name="username" value="root"/>
	    <property name="password" value=""/>
	    <!-- 配置初始化大小、最小、最大 -->
	    <property name="initialSize"><value>1</value></property>
	    <property name="maxActive"><value>5</value></property>
	    <property name="minIdle"><value>1</value></property>
	    <!-- 配置获取连接等待超时的时间 -->
	    <property name="maxWait"><value>60000</value></property>
	    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
	    <property name="timeBetweenEvictionRunsMillis"><value>60000</value></property>
	    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
	    <property name="minEvictableIdleTimeMillis"><value>300000</value></property>
	    <!--
	    <property name="validationQuery"><value>SELECT 'x'</value></property>
	    <property name="testWhileIdle"><value>true</value></property>
	    <property name="testOnBorrow"><value>false</value></property>
	    <property name="testOnReturn"><value>false</value></property>
	    <property name="poolPreparedStatements"><value>true</value></property>
	    <property name="maxOpenPreparedStatements"><value>20</value></property>
	     -->
 	</bean>
 	
 	<!-- mybatis配置 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations">
            <list>
                <value>classpath:mapper/*.xml</value>
            </list>
        </property>
    </bean> 
    
    <!-- 通过扫描的模式,扫描目录在tang/system/mapper目录下,所有的mapper都继承SqlMapper接口的接口, 这样一个bean就可以了 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="tang.system.mapper"/>
    </bean>
</beans>

注意其中JDBC的URL配置,如果你的项目中存在数据库插值乱码,则可能你没有配置数据库连接的字符编码。同时这个URL中&符号需要转移为&amp;。

另外,关于mybatis的配置中,设置了映射器配置文件为mapper目录下所有xml文件。

spring-servlet.xml主要配置了与模板引擎相关的配置,另外会有简单的拦截器以及启用注解的配置,如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
	<!-- 1、激活@Controller注解功能 在SpringMVC中,如果要使用Controller注解,就一定要配置<mvc:annotation-driven 
		/>, 参考http://blog.csdn.net/tang19880721/article/details/40475763 <mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean, 
		配置一些messageconverter,它们都是spring MVC为@Controllers分发请求所必须的。它还提供了数据绑定支持, @NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。 
		在spring mvc 3.1之后版本,注册的bean也发生了变化: DefaultAnnotationHandlerMapping -> RequestMappingHandlerMapping 
		AnnotationMethodHandlerAdapter -> RequestMappingHandlerAdapter AnnotationMethodHandlerExceptionResolver 
		-> ExceptionHandlerExceptionResolver -->
	<mvc:annotation-driven />

	<!-- 2、自动扫描bean兵自动依赖注入 配置该标签后,spring会自动扫描base-package包及其子包下的java类,并将扫描到的@Component、@Controller、 
		@Service等这些注解的类注册为bean。如果配置了 对包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 需要更改 -->
	<context:component-scan base-package="tang.system.*" />

	<context:annotation-config />
	<!-- <mvc:resources mapping="/styles/**" location="/WEB-INF/resource/styles/"/> -->

	<!-- Freemarker配置 -->
	<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
		<property name="freemarkerSettings">
			<props>
				<prop key="template_update_delay">0</prop>
				<prop key="default_encoding">UTF-8</prop>
				<prop key="number_format">0.00</prop>
				<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
				<prop key="classic_compatible">true</prop>
				<prop key="template_exception_handler">ignore</prop>
			</props>
		</property>
	</bean>

	<!-- 针对freemarker的视图配置 -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
		<property name="cache" value="true" />
		<property name="suffix" value=".ftl" />
		<property name="contentType" value="text/html;charset=UTF-8"></property>
		<property name="requestContextAttribute" value="request" />
		<property name="exposeSpringMacroHelpers" value="true" />
		<property name="exposeRequestAttributes" value="true" />
		<property name="exposeSessionAttributes" value="true" />
	</bean>

	<mvc:interceptors>
		<!-- 全局拦截器,该拦截器为模板提供basePath参数 -->
		<bean class="tang.system.interceptor.BasePathInterceptor" />
	</mvc:interceptors>
</beans>

这里需要说明的是,由于在FreeMarker的配置中,设置了templateLoaderPath为/WEB-INF/ftl意味着我们在Controller中返回的页面模板会默认到这个目录下去查找。同时由于设置subffix为.ftl,Controller中返回的页面模板就不需要再注明后缀了。总得来说,我们需要将ftl文件放置在WEB-INF/ftl目录下,后缀为ftl。如果我们在Controller中返回/admin/index,表示返回的页面模板是WEB-INF/ftl/admin/index.ftl。 

上面的配置中添加了一个拦截器,BasePathInterceptor,这个拦截器很简单,就是将项目的跟路径保存在request中,以便在模板中使用这个路径访问资源。

四、Log4j2.xml

Log4j2的使用相对比较简单,首先引入log4j-api.jar和log4j-core.jar,然后在classpath下加入log4j2.xml配置文件,剩下的就在项目中使用Logger输出日志了。

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="error">
	<appenders>
		<Console name="Console" target="SYSTEM_OUT">
			<ThresholdFilter level="trace" onMatch="ACCEPT"
				onMismatch="DENY" />
			<PatternLayout
				pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
		</Console>
		<File name="log" fileName="logs/opt.log" append="false">
			<PatternLayout
				pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
		</File>
		<RollingFile name="RollingFile" fileName="logs/opt.log"
			filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
			<PatternLayout
				pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" />
			<SizeBasedTriggeringPolicy size="500 MB" />
		</RollingFile>
	</appenders>
	<loggers>
		<root level="trace">
			<appender-ref ref="RollingFile" />
			<appender-ref ref="Console" />
		</root>
	</loggers>
</configuration>

以上是一个JavaWeb工程的基本配置,它集成了SpringMVC、Mybatis、Log4j2等框架,在此基础上,只需要添加不同的业务代码即可完成一个简单的项目。在后续的过程中,有必要的情况下我们会逐步完善这个框架,并使用这个框架完成一个项目,丰富它的功能。

© 著作权归作者所有

粉丝 29
博文 58
码字总数 88440
作品 0
南京
程序员
私信 提问
🛠VS Code编辑器配置Java开发环境

🛠VS Code编辑器配置Java开发环境 一、简述 及讨论 由于学校课程的原因,是基本以java开发为主线的课程,但是我对java兴趣不大,又加上我不太喜欢 「Eclipse」这个java的集成开发环境(简称...

Cc卿
2018/06/02
0
0
【Java学习路线】新手该如何一步步的学习 Java

新手该如何一步步的学习 Java? 如果真的想学Java,最好要循序渐进,有章有法的学习它! 今天小慕就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容。 首先,给大家分享一张以 企业...

Eddie_yang
2018/11/15
2.2K
0
MyBatis框架教程「入门起步」

今天我们就踏上学习Mybatis框架的旅程,在SSM框架中Mybatis框架是dao层的一个解决方案。相当于传统Servlet+JavaBean开发模式中JDBC的作用。具体关于MVC架构的知识可以移步「从零学习Spring ...

技术小能手
2018/07/30
0
0
为什么越来越多的开发者选择使用Spring Boot?

一、Web应用开发背景 使用Java做Web应用开发已经有近20年的历史了,从最初的Servlet1.0一步步演化到现在如此多的框架、库以及整个生态系统。经过这么长时间的发展,Java作为一个成熟的语言,...

Ala6
2018/10/10
131
0
零基础怎样学习Java,正确学习怎么学?

     动力节点Java培训最新上线Java实验班,等你来测试自己适不适合学习Java编程哦!   零基础怎样学习Java,正确学习怎么学?“做开发、做编程这件事一定要有思想,否则只相当于搬砖”...

动力节点
07/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
42分钟前
4
0
Confluence 6.15 使用附件宏

希望添加附件宏到一个页面中: 从编辑工具栏中,选择 插入(Insert) > 其他宏(Other Macros) 找到并且选择需要的宏。 可用使用自动完成加快这个过程:输入 { 然后开始输入你希望插入的宏的...

honeymoose
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
6
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0
jenkins 插件下载加速最终方案

推荐做法 1、告诉jenkins 我哪些插件需要更新 jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 1.进入jenkins系统管理 2.进入插件管...

vasks
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部