package com.etoak.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class CrossDomainFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.setHeader("Access-Control-Allow-Origin", "*");// 允許所有的請求域名訪問我們的跨域資源,可以固定單個或者多個內容
httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT");// 允許何種請求方法訪問該跨域資源服務器
httpResponse.setHeader("Access-Control-Max-Age", "3600");//// 預檢請求的有效期,單位爲秒。有效期內,不會重複發送預檢請求
httpResponse.addHeader("Access-Control-Allow-Headers", "Accept, Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With");// 允許所有的請求header訪問,可以自定義設置任意請求頭信息
httpResponse.setHeader("Access-Control-Allow-Credentials", "true");// 是否允許用戶發送、處理 cookie
chain.doFilter(request, httpResponse);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("-----CrossDomainFilter init -------");
}
@Override
public void destroy() {
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!--scan: 當此屬性設置爲true時,配置文件如果發生改變,將會被重新加載,默認值爲true。
scanPeriod: 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。
當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘(60 seconds)。
debug: 當此屬性設置爲true時,將打印出logback內部日誌信息,默認值爲false。
-->
<configuration scan="true" scanPeriod="120 seconds" debug="false">
<!--用於區分不同應用程序的記錄
<contextName>springmvc</contextName>
-->
<!-- 定義日誌文件所在目錄 -->
<property name="LOG_HOME" value="d:/logs/" />
<!--控制檯輸出 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--解決亂碼問題 -->
<charset>UTF-8</charset>
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度 %logger輸出日誌的logger名
%msg:日誌消息,%n是換行符 -->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
</encoder>
</appender>
<!--滾動文件 -->
<appender name="infoLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- ThresholdFilter:臨界值過濾器,過濾掉 TRACE 和 DEBUG 級別的日誌
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
-->
<!-- 過濾掉ERROR日誌 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<charset>UTF-8</charset>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory><!--保存最近30天的日誌 -->
</rollingPolicy>
</appender>
<!--滾動文件 -->
<appender name="errorLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- ThresholdFilter:臨界值過濾器,過濾掉 TRACE 和 DEBUG 級別的日誌 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>
<encoder>
<charset>UTF-8</charset>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>30</maxHistory><!--保存最近30天的日誌 -->
</rollingPolicy>
</appender>
<!--這裏如果是info,spring、mybatis等框架則不會輸出:
TRACE < DEBUG < INFO < WARN < ERROR
-->
<!--root是所有logger的祖先,均繼承root,如果某一個自定義的logger沒有指定level,就會尋找 父logger看有沒有指定級別,直到找到root。 -->
<root level="info">
<appender-ref ref="stdout" />
<appender-ref ref="infoLogFile" />
<appender-ref ref="errorLogFile" />
</root>
<!--爲某個包單獨配置logger 比如定時任務,寫代碼的包名爲:com.seentao.task 步驟如下:
1、定義一個appender,取名爲task(隨意,只要下面logger引用就行了)
appender的配置按照需要即可
2、定義一個logger: <logger name="com.seentao.task" level="DEBUG"
additivity="false"> <appender-ref ref="task" /> </logger> 注意:additivity必須設置爲false,這樣只會交給task這個appender,否則其他appender也會打印com.seentao.task裏的log信息。
3、這樣,在com.seentao.task的logger就會是上面定義的logger了。 private static Logger logger
= LoggerFactory.getLogger(Class1.class); -->
<!--控制檯輸出 -->
<appender name="mybatisLog" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
</encoder>
</appender>
<logger name="com.etoak.mapper" level="DEBUG" additivity="false">
<appender-ref ref="mybatisLog" />
</logger>
</configuration>
連上同桌的熱點
同桌電腦關閉防火牆
cmd ping同桌ip
ping 192.168.43.63
這裏的端口號是同桌的
發送ajax請求
啓動自己的程序
項目名是自己程序的項目名
在自己的服務器裏訪自己的資源不算跨域,
在ajax裏拿別人數據是跨域