小编Luc*_*cky的帖子

如何在web.xml和log4j.properties中配置log4j输出文件路径?

我开发了一个Web应用程序,我可以在其中注册一名员工.

我的 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" id="WebApp_ID" version="2.5">

  <display-name>Employee Registration</display-name>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
  <servlet-name>sapient</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
  <servlet-name>sapient</servlet-name>
  <url-pattern>*.htm</url-pattern>
  </servlet-mapping>

</web-app>
Run Code Online (Sandbox Code Playgroud)

现在,当我点击Register我的html页面中的一个按钮时.它转到一个控制器类,我已经编写了一个用于记录的代码,

@org.springframework.stereotype.Controller
public class RegController  {
    private static final Logger LOGGER = Logger
            .getLogger(RegController.class.getName());


@RequestMapping(value = "/register.htm", method = RequestMethod.GET)
public ModelAndView handleRequest(HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    LOGGER.debug("ENTERING the contoller class");
    ModelAndView mav = new ModelAndView("register");
    LOGGER.debug("exiting the contoller class");
    return mav;

}
Run Code Online (Sandbox Code Playgroud)

}

我创建了一个名为的包,resource并在其中创建了一个log4j.properties文件 …

debugging configuration web.xml log4j properties-file

7
推荐指数
2
解决办法
3万
查看次数

Java模型对象设计

所以我一直在阅读一些有效的Java!本书最鼓舞人心的部分之一是Immutable Object/Builder部分,其中Bloch写的是关于"Builder" - 类,而不仅仅是POJO.

注意:我在这里谈论模型对象:例如文章汽车.

这是我之前写这些对象的方式:

public class Car {

     private String name;

     public void setName(String name) {
         this.name = name;
     }

     public String getName() {
         return name;
     }
}
Run Code Online (Sandbox Code Playgroud)

现在,当您看到此设计在许多方面存在缺陷时,它需要可变性,您必须首先使用构造函数构造对象,然后设置名称.

当然,你现在可以使name字段最终并将其用作构造函数中的参数,但是如果你有一个大对象包装例如一些SQL - Tables那么你将有一个丑陋的构造函数,如下所示:

public Car(int horsepowers, String name, String brand, int yearManufactured,
    User owner, List<User> previousOwners) {
    //Set the values
}
Run Code Online (Sandbox Code Playgroud)

这在创建对象时变得不可读,而这只是六个字段!

所以,布洛赫建议如下(具有不变性)

public class Car {

     public static class Builder {

         private String name;

         public Builder setName(String name) {
             this.name …
Run Code Online (Sandbox Code Playgroud)

java model object effective-java

7
推荐指数
1
解决办法
2万
查看次数

java:List.contains()与手动搜索的性能差异

我试图证明之间的差异,List.contains()并手动搜索执行时间,结果很棒.这是代码,

public static void main(String argv[]) {
    List<String> list = new ArrayList<String>();
    list.add("a");
    list.add("a");
    list.add("a");
    list.add("a");
    list.add("a");
    list.add("a");
    list.add("b");

    long startTime = System.nanoTime();

    list.contains("b");

    long endTime = System.nanoTime();
    long duration = endTime - startTime;

    System.out.println("First run: "+duration);

    startTime = System.nanoTime();
    for(String s: list){
        if(s.equals("b"))
            break;
    }
    endTime = System.nanoTime();

    duration = endTime - startTime;
    System.out.println("Second run: "+duration);

}
Run Code Online (Sandbox Code Playgroud)

输出:

  • 首次运行:7500
  • 第二轮:158685

    1. contains()函数如何产生如此大的差异?

    2. 它使用哪种搜索算法?

    3. 如果列表包含搜索到的元素,它会在第一个元素处终止搜索吗?

java contains list

7
推荐指数
1
解决办法
2万
查看次数

我们如何通过编程方式获得Android手机的制造日期,翻新检查?

我正在开发一个应用程序,它显示Android手机的硬件和软件信息,如内部存储,屏幕大小,IMEI,Rootes等.我被困在获取一些信息,如制造日期,翻新检查,电话颜色,耳机连接计数器,Charger连接计数器以及一些传感器健康信息,如InfraRed,Ant +,无线电发射器.

有没有办法获得所有信息?

我找到了一个类似于我的要求的应用程序,下面是Playstore上提供的应用程序链接.手机信息★三星★

android

6
推荐指数
1
解决办法
1962
查看次数

如何在Android studio 1.3中设置gradle版本?

我已经更新到Android工作室到版本1.3.在我的项目中,我需要使用gradle版本2.2.1和android gradle插件版本1.0.0.如何设置android studio自动使用gradle版本2.2.1?

我已将gradle包装器特性设置为2.2.1,并且在项目结构中它还显示它使用的是gradle版本2.2.1

gradle-wrapper.properties

#Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle2.2.1-all.zip
Run Code Online (Sandbox Code Playgroud)

输出:

错误:Gradle 2.4需要Android Gradle插件1.2.0(或更新版本),但项目使用的是1.0.0版本.请使用Android Gradle插件1.2.0或修复插件版本和同步项目

我想使用Gradle 2.2.1,但它一直跳到2.4

java android gradle

6
推荐指数
2
解决办法
8874
查看次数

如何通过http发送时从log4j日志中隐藏用户名和密码

我想在记录包含它们的Http POST消息时隐藏我的log4j日志中的用户名和密码.我在此示例中删除了真实的用户名和密码:

2015-10-07 11:19:41  DEBUG wire:72 - http-outgoing-3 >> "POST /login?IDToken1=<Username in plain text is seen here>&IDToken2=<Password in plain text is seen here> HTTP/1.1[\r][\n]"
Run Code Online (Sandbox Code Playgroud)

我有一个log4j.properties文件,其rootlogger设置为DEBUG.我尝试使用以下行仅记录INFO级别:

log4j.logger.org.apache.http.headers=INFO
log4j.logger.org.apache.http.client=INFO
log4j.logger.org.apache.http.wire=INFO
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用.我试过这个但是它有效:

log4j.logger.org.apache.http=INFO
Run Code Online (Sandbox Code Playgroud)

唯一的问题是所有http登录DEBUG级别也是隐藏的.我真的只想隐藏用户名和密码,如果可能的话.要么是微调,要么微调粒度,以便我可以在上面的例子中隐藏消息.

这可能吗?

java logging log4j

6
推荐指数
1
解决办法
925
查看次数

如何使用Android Studio中的gradle实验插件0.2.0将静态库(.a文件)与APK链接

我的项目有两件事.

  1. 我正在创建一个静态库 ndk-build
  2. 将静态库链接到Android Studio中的现有应用程序.

提到了很多问题并尝试了很多回复.但它们都不适合我.

这是我的疑惑,

  1. 实际应该放置静态库..?
  2. 如何指定我链接静态库的Gradle构建系统..?

请帮我完成必要的步骤.

android android-ndk android-studio build.gradle android-gradle-plugin

6
推荐指数
1
解决办法
5104
查看次数

如何在thymeleaf中设置css文件的后台URL?

我有一个百万美元的模板,我没有导入CSS文件,并希望声明background-image: url{/image.jpg}具有相对图像URL的属性的body元素的样式属性.我想加载URL而不包括应用程序上下文名称(/myapp/).它类似于这里的问题,除了它对我不起作用.

CSS:

<style>
body {
    background: url(../img/Background.jpg)
                no-repeat center center fixed;
    background-size: cover;
}
</style>
Run Code Online (Sandbox Code Playgroud)

但上面的CSS不起作用,它访问图像

http://localhost/img/Background.jpg. 
Run Code Online (Sandbox Code Playgroud)

因此,我必须给出url(/myapp/img/Background.jpg)正确加载图像的值.

我有mvc:resources正确设置在配置spring-context.xml/img/要求正确加载,它在其他地方工作.

弹簧的context.xml

<mvc:resources mapping="img/**" location="/WEB-INF/img/" />
Run Code Online (Sandbox Code Playgroud)

那么如何使用thymeleaf的相对url动态加载后台url image css值呢?

css relative-path background-image thymeleaf

6
推荐指数
3
解决办法
1万
查看次数

如何将@DataJpaTest 与多个数据源一起使用

我尝试使用注释 @DataJpaTest 编写集成测试。我有两个数据源:主要和次要(类配置)结果我有一个错误:

expected single matching bean but found 2: primaryDataSource,secondary
Run Code Online (Sandbox Code Playgroud)

然后我尝试添加注释

@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.AUTO_CONFIGURED)
Run Code Online (Sandbox Code Playgroud)

并且使用 AUTO_CONFIGURED 只有由属性配置的数据源将被替换,但我看到的是嵌入的 h2 Dialect : HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect

如何使用@DataJpaTest多个数据源?

public class DataSourcesConfig {


    @Bean
    @Primary
    @ConfigurationProperties(prefix="spring.datasource")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondary")
    @ConfigurationProperties(prefix="datasource.secondary")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

}
Run Code Online (Sandbox Code Playgroud)

spring-boot

6
推荐指数
1
解决办法
2331
查看次数

如何检查对象列表是否包含使用百日咳的字符串?

假如我有一个带有用户对象的ArrayList.

User.java

class User{
  private Long id;
  private String name;
}
Run Code Online (Sandbox Code Playgroud)

我有一个用户列表

list.add(new User(1,"John");
list.add(new User(2,"Sam");
Run Code Online (Sandbox Code Playgroud)

如果用户列表中有一个名为"Sam"的用户,我想检查百万美元.

${#lists.contains(userList.name,'Sam')}
Run Code Online (Sandbox Code Playgroud)

但上述情况并不奏效 Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression

我也试过"(doube-quotes)

java arraylist thymeleaf

6
推荐指数
1
解决办法
3581
查看次数