我在学校的活动中写了一个程序,当我编译时,我得到以下错误:
我也用notepad ++编译这是代码:
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
arrayList.add("A");
arrayList.add("B");
arrayList.add("C");
arrayList.add("D");
arrayList.add("E");
System.out.println("Before Reverse Order: " + arrayList);
Collections.reverse(arrayList);
System.out.println("After Reverse Order: " + arrayList);
}
}
Run Code Online (Sandbox Code Playgroud)
我是新学习java所以任何帮助表示赞赏谢谢!
我是JUnit的初学者.我想创建一个测试来获取所有products并获得products id.这是我的Java代码:
@Path("/produits")
@Produces("application/json")
public class ProduitResource {
public ProduitResource() {
}
@GET
public List<Produit> getProduits() {
System.out.println("getProduits");
return ReadXMLFile.getProduits();
}
@GET
@Path("numProduit-{id}")
public Produit getProduit(@PathParam("id") String numProduit) {
System.out.println("getProduit");
for (Produit current : ReadXMLFile.getProduits()) {
if (numProduit.equals(current.getNumProduit())) {
return current;
}
}
return null;
}
@GET
@Path("/search")
public List<Produit> searchProduitsByCriteria(@QueryParam("departure") String departure, @QueryParam("arrival") String arrival, @QueryParam("arrivalhour") String arrivalHour) {
System.out.println("searchProduitsByCriteria");
return ReadXMLFile.getProduits().subList(0, 2);
}
}
Run Code Online (Sandbox Code Playgroud) 什么是更好的?当 REST 端点查询实体时 - 一次返回所有实体和子实体,然后使用一些客户端代码(我们称之为“急切”模式)将它们显示在 UI 上,或者最好返回主要实体而不是它的子实体,返回这些子实体的 id,然后让 UI 照顾并为每个 id 发出正确的 REST 请求?(我们称之为lazy模式)。
所以要返回这个 JSON(这实际上不是一个有效的 JSON,只是留下 region: 前缀让你了解它是什么实体):
country: {
name: 'C1',
regions: [
region: {
id: 'I1'
name: 'R1',
area: 'A1'
},
region: {
id: 'I2'
name: 'R2',
area: 'A2'
},
]
}
Run Code Online (Sandbox Code Playgroud)
或这个 :
country: {
name: 'C1',
regions: ['I1','I2']
}
Run Code Online (Sandbox Code Playgroud)
进而:
GET /rest/region/I1
GET /rest/region/I2
Run Code Online (Sandbox Code Playgroud)
哪一个更好?什么时候使用哪个?谢谢
我正在使用" Amuthan G - Spring MVC初学者指南 " 这本书.目前我正在尝试使用下一个实现安全性security-context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<security:http auto-config="true">
<security:intercept-url pattern="/products/add" access="ROLE_ADMIN" />
<security:form-login login-page="/login"
default-target-url="/products/add"
authentication-failure-url="/loginfailed"/>
<security:logout logout-success-url="/logout" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="Admin" password="Admin123" authorities="ROLE_ADMIN" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans>
Run Code Online (Sandbox Code Playgroud)
与安全相关的配置web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/webcontext/security-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<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)
但是这个例子最终会IllegalArgumentException在打开安全路径时结束:
java.lang.IllegalArgumentException: Failed to evaluate expression 'ROLE_ADMIN' …Run Code Online (Sandbox Code Playgroud) 我想从得到的数据CrudRepository用于RestResource由JPA查询:
public interface IContactRepository extends PagingAndSortingRepository<Contact, Long> {
@Query("select contact from Contact contact where contact.owner.login = ?#{principal.username}")
@RestResource( path = "my")
List<Contact> findByOwner();
}
Run Code Online (Sandbox Code Playgroud)
但我明白了:
在'java.lang.Object []'类型的对象上找不到属性或字段'principal' - 可能不公开?
我可以直接获得校长:
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
Run Code Online (Sandbox Code Playgroud)
但我需要在界面内直接访问RestResource.
我正在用Spring Security 4.0编写一个安全应用程序。作为其中的一部分,我想进行登出电话。它只是在提供不支持的请求方法“ POST”。这是我的代码:
spring-security.xml
<security:http auto-config="true">
<security:access-denied-handler error-page="/denied"/>
<security:form-login login-page="/login"
username-parameter="j_username"
password-parameter="j_password"
login-processing-url="/j_spring_security_check"
authentication-failure-url="/login?failed=true"
default-target-url="/home" always-use-default-target="true"/>
<security:custom-filter ref="secfilter" before="FILTER_SECURITY_INTERCEPTOR" />
<security:logout invalidate-session="true" logout-url="/j_spring_security_logout" logout-success-url="/login"/>
<!-- <security:logout logout-url="/j_spring_security_logout" logout-success-url="/login"/> -->
<security:csrf />
</security:http>
Run Code Online (Sandbox Code Playgroud)
jsp
<a href="j_spring_security_logout"> <button class="logoutbtn">logout</button></a>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的项目中使用Spring Security,这里是代码:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// TODO Auto-generated method stub
//super.configure(auth);
//auth.inMemoryAuthentication().withUser("admin").password("1111").roles("USER");
auth
.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery("select username, password, 1 from users where username=?")
.authoritiesByUsernameQuery("select users_username, roles_id from roles_users where users_username=?")
.rolePrefix("ROLE_");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable();
http
.httpBasic();
http
.authorizeRequests()
.anyRequest().authenticated();
http
.authorizeRequests()
.antMatchers("/users/all").hasRole("admin")
.and()
.formLogin();
http
.exceptionHandling().accessDeniedPage("/403");
}
Run Code Online (Sandbox Code Playgroud)
这是问题所在:
想象一下,我们的数据库中有两个用户(一个有user角色,另一个有admin角色),一个是admin,第二个是用户,问题是我作为用户连接时(只有user角色)可以访问管理员资源(这不是预期的行为).
我认为这个查询中的问题:
"select username, password, 1 from users where username=?"
Run Code Online (Sandbox Code Playgroud)
据说那username是主键? …
这是我的UserDetailService:
public class StockUserDetailService implements UserDetailsService {
@Autowired
private UserRepository userRepository;
private static final Logger logger = Logger.getLogger(StockUserDetailService.class);
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
logger.debug("entering loadByUserName");
// MongoDatabase database = mongoClient.getDatabase("springsecurity");
User user = userRepository.findOne(username);
logger.debug("this is teh user ibzect ="+user);
if (user == null) {
logger.info("----------------------------------------------user name is "+username);
throw new UsernameNotFoundException("NAT FOUND");
}
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
但是username争论总是这样来的null。我在Stackoverflow上看到大量其他帖子,都遇到了同样的问题。他们中的一些人说这是因为它期望username和password作为HTTP标头而不是JSON的一部分。
但是我认为这是不对的,因为Spring Boot的默认登录页面只有一种简单的形式,可以向POST发送请求/login。这是我在做什么。
我不明白这里的问题。
PS:我已经正确配置了 …
我想在单击按钮之前禁用该按钮,这就是我所拥有的:
<button type="submit" name="shippingAddress_save" value="Continue to Billing >" disabled="disabled">
Run Code Online (Sandbox Code Playgroud) 我有一个使用该SecurityFilterAutoConfiguration功能的 Spring Boot (2.1.5) 应用程序。注册期间DelegatingFilterProxyRegistrationBean仅 设置REQUEST、ASYNC、 。ERROR DispatcherTypes但我也FORWARD需要。INCLUDE
Spring Boot 1.x 中的属性security.filter-dispatcher-types不再起作用。
我可以通过“覆盖”来解决该问题,DelegatingFilterProxyRegistrationBean如下所示:
@Bean
@ConditionalOnBean(name = DEFAULT_FILTER_NAME)
@Primary
public DelegatingFilterProxyRegistrationBean customSecurityFilterChainRegistration(SecurityProperties securityProperties) {
DelegatingFilterProxyRegistrationBean registration = new DelegatingFilterProxyRegistrationBean(DEFAULT_FILTER_NAME);
registration.setOrder(securityProperties.getFilter().getOrder());
registration.setDispatcherTypes(allOf(DispatcherType.class));
return registration;
}
Run Code Online (Sandbox Code Playgroud)
但这对我来说似乎不是一个非常优雅的解决方案。
有没有办法为 Spring Boot 2.1.x 显式配置它?
java ×7
rest ×2
spring ×2
spring-boot ×2
arrays ×1
button ×1
json ×1
junit ×1
login ×1
spring-3 ×1
spring-4 ×1
spring-mvc ×1
testing ×1
web-services ×1