小编ana*_*ema的帖子

url中%20和%2之间的差异

我正在开发的java应用程序正在发布一个url,url的某些部分是这样的:

asset=travel%2Ccar%2Chouse%2Cbusiness
Run Code Online (Sandbox Code Playgroud)

网址中的%20和%2有什么不同吗?我知道%20表示空格,但是当我看到%2时我有点困惑.

java url web

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

理解单一责任原则

我很困惑如何确定单个方法是否有一个责任,就像清洁代码一书中的以下代码一样

public Money calculatePay(Employee e) throws InvalidEmployeeType {
        switch (e.type) {
            case COMMISSIONED:
                return calculateCommissionedPay(e);
            case HOURLY:
                return calculateHourlyPay(e);
            case SALARIED:
                return calculateSalariedPay(e);
            default:
                throw new InvalidEmployeeType(e.type);
        }
    }
Run Code Online (Sandbox Code Playgroud)

正如作者在这段代码中所说的那样:"...... 显然不止一件事.第三,它违反了单一责任原则(SRP),因为改变它的原因不止一个. " 乍一看我的代码我在想这个方法是如何违反SRP的,因为如果代码发生了变化,只有当有一个添加的员工类型但是我试图理解方法时才会成为switch语句我进一步想出了为什么它违反了上述原则.

我的假设是,因为方法的名称是这个方法calculatePay(Employee e)的唯一责任是支付计算,因为方法的名称建议但是因为在方法内部有一个过滤过滤Employee的类型,这个过滤现在是不同的或因此,另一项责任违反了SRP.我不知道我是否做对了.

java design-patterns single-responsibility-principle

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

在 Spring MVC 中处理 JWT 异常

我正在尝试在我们的 REST Api 上实现令牌身份验证,目前我指的是这篇文章。在文章中,它讨论了在创建令牌时使用了 JWT,但我当前的问题是每次将无效令牌传递给我的应用程序时,都会创建一个异常,即 JwtException.class,我想捕获该异常使用我的全局异常处理程序类。我还尝试将 JwtException 包装在我的应用程序的异常类中,但没有捕获到异常,但无济于事。

@ControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(value={JwtException.class})
public ResponseEntity<?> handleTokenException(JwtException e){
    return new ResponseEntity<Object>(HttpStatus.UNAUTHORIZED);
}

@ExceptionHandler(value={InvalidAuthTokenException.class})
public ResponseEntity<?> handleTokenException(InvalidAuthTokenException e){
    return new ResponseEntity<Object>(HttpStatus.UNAUTHORIZED);
    }
}
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc jwt

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

从 InputStream 加载对象时出错 - jasper 报告

我正在尝试为我们的报告生成传递子报告上的对象列表,但我收到此错误消息:

net.sf.jasperreports.engine.JRException: Error loading object from InputStream
net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error loading object from InputStream
    at net.sf.jasperreports.repo.SerializedObjectPersistenceService.load(SerializedObjectPersistenceService.java:65) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.repo.SerializedReportPersistenceService.load(SerializedReportPersistenceService.java:46) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.repo.DefaultRepositoryService.getResource(DefaultRepositoryService.java:187) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.repo.RepositoryUtil.getResourceFromLocation(RepositoryUtil.java:246) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:208) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:328) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:361) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:286) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:459) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2044) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653) ~[jasperreports-5.0.1.jar:5.0.1]
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969) ~[jasperreports-5.0.1.jar:5.0.1]
Run Code Online (Sandbox Code Playgroud)

关于这个问题,我尝试了不同的教程,但我仍然遇到相同的错误,下面是传递给主报告的主要对象的示例结构

    private String headerRecordFormat;
    private String institutionRecordFormat;
    private ArrayList<InstituionDetailFormatTransactions> …
Run Code Online (Sandbox Code Playgroud)

java jasper-reports subreport

5
推荐指数
1
解决办法
4117
查看次数

Spring Security中的authorizeRequests有什么作用?

从我拥有此配置的那一刻起,我一直在尝试为不同的 api 端点设置多个安全配置:

http
    .antMatcher("/user/**")
    .authorizeRequests()
        .antMatchers("/user/document/**").permitAll()
        .and()
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .httpBasic();
Run Code Online (Sandbox Code Playgroud)

此配置有效,但当我尝试删除第二个配置时,我也很困惑authorizeRequests()(见下文)。配置也有效。

http
    .antMatcher("/user/**")
    .authorizeRequests()
        .antMatchers("/user/document/**").permitAll()
        .anyRequest().authenticated()
        .and()
    .httpBasic();
Run Code Online (Sandbox Code Playgroud)

这个方法有什么作用?我每次都必须调用它吗?

java spring spring-security

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

评估尊重括号和优先权 - java

根据Java语言规范:

评估尊重括号和优先顺序

除了使用数学运算之外:

int i = 3;
int j =  3 * (9 + 3);
System.out.println(j); //results to 36
Run Code Online (Sandbox Code Playgroud)

该规则是否适用于其他任何示例?我试过用

int i = 0;
int z = 0;
if(i++ < 5 || (++z <0 && 5 > z++) || 6 < ++i){
  System.out.println("Routed here");
}
System.out.println("i: " + i);
System.out.println("z: " + z);
Run Code Online (Sandbox Code Playgroud)

但结果是i:1和z:0.似乎对该示例的评估仍然是从左到右.

java

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

libpng12.so.0:无法打开共享对象文件 - genymotion

每次我尝试在我的 Fedora 机器上打开我的 genymotion 我总是得到错误

libpng12.so.0: cannot open shared object file
Run Code Online (Sandbox Code Playgroud)

在互联网上搜索后,我看到了一个关于使用的答案yum provides */libpng12.so.0 ,终端提示我:

libpng12-1.2.50-5.fc20.i686 : Old version of libpng, needed to run old binaries
Repo        : fedora
Matched from:
Filename    : /usr/lib/libpng12.so.0



libpng12-1.2.50-5.fc20.x86_64 : Old version of libpng, needed to run old
                              : binaries
Repo        : fedora
Matched from:
Filename    : /usr/lib64/libpng12.so.0



libpng12-1.2.50-6.fc20.i686 : Old version of libpng, needed to run old binaries
Repo        : updates
Matched from:
Filename    : /usr/lib/libpng12.so.0



libpng12-1.2.50-6.fc20.x86_64 : Old version of libpng, …
Run Code Online (Sandbox Code Playgroud)

fedora libpng genymotion

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

Spring Boot 静态资源

我正在尝试使用 Mvc 和 AngularJs 创建一个 Spring Boot。我修改了我的应用程序的视图解析器,所以我可以让我的应用程序在“WEB-INF/pages/”文件夹中查看我的静态 html 文件。现在在 html 文件中,我使用 webjars 依赖声明了我的 AngularJs 库的来源

<script src="webjars/angularjs/1.5.5/angular.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我知道为了完成这项工作,我必须在应用程序的 ResourceHandlerRegistry 上声明 webjars libray 的类路径,因此在我的配置文件中我只添加了这行代码

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
Run Code Online (Sandbox Code Playgroud)

添加这一行后,我的代码以某种方式工作,但让我好奇的是关于我的 html 文件中的这一行

<script src="resources/js/angular/app.js"></script>
Run Code Online (Sandbox Code Playgroud)

我注意到在 Spring MVC 应用程序上,为了让 Spring 检测 webapp 资源文件夹下的 Javascript 文件,我们必须ResourceHandlerRegistry像这样声明该文件夹

public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
Run Code Online (Sandbox Code Playgroud)

但是我还没有在 Spring Boot 上声明我的 webapp 的资源文件夹,ResourceHandlerRegistry但应用程序仍然可以看到我的 app.js 文件并且我的 AngularJs 代码仍然有效。这是我的应用程序的文件结构

src |--main |--java |--resources |--webapp |--resources |--js |--angular |--app.js |--WEB-INF |--index.html

javascript java spring spring-mvc spring-boot

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

||之间的优先顺序 和&& - java

由于我的原因,&&其优先级高于||以下代码

    static boolean a;
    static boolean b;
    static boolean c;
    public static void main(String[] args) {
        boolean d = (a = true) || (b = true) && (c = true);
        System.out.println(a + " " + b + " " + c + " ");

    }
Run Code Online (Sandbox Code Playgroud)

这个代码的输出是true false false,因为有括号我假设true变量a,b和c 的赋值将在执行表达式之前首先执行,&&并且||我的理解就像(a = true)|| ((b = true)&&(c = true))但是根据输出,似乎在分配true给变量a后,左侧||已经执行,因此不执行其余的代码.这是否意味着||已经覆盖了&&自左侧执行以来?

java

0
推荐指数
1
解决办法
130
查看次数

String方法返回的String对象 - java

如果在字符串常量池中添加了字符串文字,并且每个String方法都在创建一个新的String对象,那么这意味着这些方法返回的String对象是否被添加到常量池中?

"String".replace('g','G') == "String".replace('g','G')
Run Code Online (Sandbox Code Playgroud)

上面的代码打印为false,即使替换的结果是"StrinG",因为replace方法返回一个新的String对象,然后它恰好发生"=="的两边都是不同的String对象碰巧具有相同的字符顺序是"StrinG"?

**编辑:**由Pshemo评论,是的,我确实知道"=="和"等于()"之间的区别,问题是如果任何机会,方法输出的字符串也被添加到恒定的池.

java string

-5
推荐指数
1
解决办法
115
查看次数