小编car*_*ret的帖子

调用j_spring_security_logout不起作用

我正在尝试使用j_spring_security_logout设置我的应用程序的logut但由于某种原因它无法正常工作,我一直收到404错误.

我正在调用这样的函数:

<a href="<c:url value="/j_spring_security_logout"/>"><img border="0" id="logout" src="./img/logout.png" /></a>

我在WebContent/jsp/my应用程序主页面中,登录和注销页面在WebContent/login /中.

我还检查了Spring安全注销的其他帖子问题但是那里给出的解决方案对我不起作用.

在这里你可以看到我的web.xml

<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>
Run Code Online (Sandbox Code Playgroud)

这是我的spring-security.xml

<http auto-config="true">
    <intercept-url pattern="/*" access="ROLE_USER" />
    <form-login login-page="/login/login.jsp" 
                authentication-failure-url="/login/errorLogin.jsp"/>
    <logout logout-success-url="/" logout-url="/login/logout.jsp" />
</http>

<beans:bean id="myAuthenticationProvider" 
    class="myapp.web.authentication.WSAuthenticationProvider">
</beans:bean>

<authentication-manager>
    <authentication-provider ref="myAuthenticationProvider"/>
</authentication-manager>
Run Code Online (Sandbox Code Playgroud)

提前致谢.

security spring logout

20
推荐指数
3
解决办法
4万
查看次数

Eclipse格式化程序拆分长字符串

有没有办法告诉 Eclipse 格式化程序,当字符串太长时,它应该将其拆分+自动适应最大线宽?

例如,如果我的最大线宽是 80,我会喜欢这个:

String s = "This is a very very very very very very very very very very very very very very very very very very very long String";
Run Code Online (Sandbox Code Playgroud)

变成这样:

String s = "This is a very very very very very very very very very very very"
+ " very very very very very very very very long String";
Run Code Online (Sandbox Code Playgroud)

eclipse eclipse-formatter

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

静态工厂模式返回类型中的有界通配符

我在 Effective Java 中读到你不应该使用有界通配符作为返回类型,但我不知道我应该怎么做。我的代码编译的唯一方法是RequestCloner<? extends HttpUriRequest>在静态工厂中使用作为返回类型。我做错了什么还是有解决方法?

注意:要注意的一件事是HttpUriRequest有方法setHeader,但只有HttpPost方法setEntity

abstract class RequestCloner<T extends HttpUriRequest> {

  protected T clonedRequest;

  private enum RequestType {
    GET, POST, DELETE
  }

  static RequestCloner<? extends HttpUriRequest> newInstance(
      String type, String url) {
    RequestType requestType = RequestType.valueOf(type);
    switch (requestType) {
    case GET:
      return new GetRequestCloner(url);
    case POST:
      return new PostRequestCloner(url);
    case DELETE:
      return new DeleteRequestCloner(url);
    default:
      throw new IllegalArgumentException(String.format(
          "Method '%s' not supported",
          type));
    }
  }

  public abstract HttpUriRequest …
Run Code Online (Sandbox Code Playgroud)

java generics wildcard

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

使用继承的自定义 JsonDeserializer 导致 StackOverflowError

我在使用自定义 JsonDeserializer 时遇到问题。我正在尝试根据 Rest 服务调用接收到的 JSON 消息来使用抽象类的不同实现(如果数据是一个Array使用的,如果它是String另一个使用):

@Path("/rest/cipher")
public interface CipherManager {

    @POST
    @Consumes("application/json")
    @Produces("application/json")
    @Path("/encrypt")
    public Response cipher(AbstractCipherRequestBean jsonRequestData);
}
Run Code Online (Sandbox Code Playgroud)

解串器看起来像这样:

public class CipherRequestDeserializer extends JsonDeserializer<AbstractCipherRequestBean> {

@Override
public AbstractCipherRequestBean deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
    ObjectMapper mapper = (ObjectMapper) jp.getCodec();
    ObjectNode root = (ObjectNode) mapper.readTree(jp);
    Class<? extends AbstractCipherRequestBean> abstractCipherRequestBeanClass = null;
    Iterator<Entry<String, JsonNode>> elementsIterator = root.getFields();
    while (elementsIterator.hasNext()) {
        Entry<String, JsonNode> element = elementsIterator.next();
        String name = element.getKey();
        if(name.equals("b64Data")){
            if(element.getValue().isArray()){
                abstractCipherRequestBeanClass = …
Run Code Online (Sandbox Code Playgroud)

java json annotations jackson json-deserialization

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

在lambda中使用类字段

我不明白这种行为.

这段代码符合:

public class A {

    private String s;

    private Function<String, String> f = e -> s;

    public A(String s) {
        this.s = s;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我做s最后的,那么我得到一个编译器错误:

public class A {

    private final String s;

    private Function<String, String> f = e -> s; // Variable 's' might not have been initialized

    public A(String s) {
        this.s = s;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是为什么?如果是另一种方式,我明白了,但是当我声明一个字段final(这迫使我在构造函数中初始化它的值)时,编译器是怎么抱怨的,当它不是时它就可以了final

java lambda java-8

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

在超类中使用@Autowired的Spring工厂bean

我在Spring中实现了一个工厂bean来实例化超类的不同子类.我遇到的问题是超类属性不存在@Autowired(我猜是由于new工厂方法中的命令).这是我的代码:

@Component
public class ConfigBeanImpl implements ConfigBean{

@Override
public String expandParam(String param) {
    return String.format("expanded %s", param);
}
}

public abstract class FactoryBean {

@Autowired
protected ConfigBean configBean;

private String property;

protected FactoryBean() {
    this.property = configBean.expandParam("property");
}

public abstract String getProperty();

public static FactoryBean GET(int id) {
    return new FactoryBeanGet(id);
}

public static FactoryBean POST(String param){
    return new FactoryBeanPost(param);
}
}

public class FactoryBeanGet extends FactoryBean {

private int id;

protected FactoryBeanGet(int id) {
    this.id …
Run Code Online (Sandbox Code Playgroud)

java inheritance spring factory autowired

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