实际上,我已经有这个问题很长一段时间了,我使用SpringMVC + Hibernate3 + Spring Security作为框架,tomcat 7作为容器,但是在web.xml中添加过滤器和拦截器之后,就有了sooooo许多调试信息打印到控制台,无论我如何更改配置文件,那些调试信息始终保持在那里,请帮忙.
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_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>iCubeHRS</display-name>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/dispatcher-servlet.xml
/WEB-INF/spring-security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
log4j的
# Root logger option
log4j.rootLogger=WARN, file
log4j.category.org.springframework = OFF
log4j.logger.org.springframework.aop.framework.autoproxy=OFF
log4j.logger.org.apache=OFF,R
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=c\:\\test\\logging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)
控制台中那些血腥的调试信息(远远超过我在这里粘贴的信息): …
我有一个非常简单的(Question)
一对多(Options)
关系,Option 有 FK (questionId)
to Question,现在我要在一个 XML 配置中插入一个带有选项列表的 Question 对象。
题:
public Class Question{
...
private Integer questionId;
private List<Option> options;
....
}
Run Code Online (Sandbox Code Playgroud)
选项:
public Class Option{
...
private Integer optionId;
private String context;
private Integer questionId; //FK
....
}
Run Code Online (Sandbox Code Playgroud)
配置:
...
<insert id="insertQuestion" parameterType="com.pojos.Question" useGeneratedKeys="true">
INSERT into question (...) VALUES (...);
<selectKey keyColumn="questionId" keyProperty="questionId" resultType="int">
SELECT MAX(questionId) FROM question;
</selectKey>
INSERT INTO option (context, questionId)
VALUES
<foreach collection="options" item="option" open="(" separator="),(" close=")">
#{option.context}, #{questionId}
</foreach> …
Run Code Online (Sandbox Code Playgroud) 在开发过程中,通常我会分别将很多第三方库导入到我的html中,如下所示:
<script src="/resource/jquery-validation-1.15.0/jquery.validate.js" type="text/javascript"></script>
<script src="/resource/jquery-validation-1.15.0/localization/messages_en.min.js" type="text/javascript"></script>
<script src="/resource/assets/js/publish.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
为了创建一个发布分支,我将使用 Gulp 将所有这些分离的文件缩小并连接到一个“min.js”文件中,以保存 http 请求和时间加载,如下所示:
<script src="/resource/all.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
所以我的困难是,每次我必须手动将这些单独的导入替换为缩小的导入,对于只有 1 或 2 页的情况来说这不是一个大问题,但是如果你有超过 10 页,它就会变成一场噩梦,我相信一定有是处理此问题的“正确”方法,最理想的方法是仅通过运行 Gulp 脚本来设置所有内容。
有更好的解决方案或建议吗?或者我管理发布分支的方式完全错误?
HTML代码:
<div class='abc'>
<a>test1</a>
<a class='active'>test2</a>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS代码:
.abc a { color: red; }
.active { color: green; }
Run Code Online (Sandbox Code Playgroud)
结果:DEMO
问题:
如您所见,所有标签A都显示为红色,".active"类没有生效,导致此结果的原因以及如何解决?
谢谢.
更新:我问了一个愚蠢的问题,我混合B是A的子类型,然后Map<String, B>
是子类型,Map<String, A>
这显然是不正确的.
公共接口A {....}
public class B implements A {
....
}
Run Code Online (Sandbox Code Playgroud)
现在我有这门课.
Class abstract ABC {
public abstract Map<String, A> execute();
}
Class XYZ {
private ABC abc;
public Map<String, A> doSomeWork(){
return abc.execute()
}
}
Run Code Online (Sandbox Code Playgroud)
然后
Class DEF extends ABC {
@Override
public Map<String, B> execute(){
....
}
}
Class Main {
....
XYZ xyz = new XYZ();
DEF def = new DEF();
xyz.setABC(def);
Map<String, B> map = xyz.doSomeWork(); //incompatible type error here …
Run Code Online (Sandbox Code Playgroud)