week 7.13-7.19
- | Study-update |
---|---|
-Mon | springMvc,断言 |
-Tue | shiro练习,算法练习 |
- | Study-update |
- | - |
-Fri | shiro-springboot实现登陆拦截 |
- | Study-update |
- | - |
7.13 Monday
引入静态方法
import com.maaoooo.web.HomeController;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* @author lzr
* @date 2020/7/13 09:00:05
* @description
*/
public class HomeControllerTest {
@Test
public void testhomepage() {
HomeController homeController = new HomeController();
assertEquals("home", homeController.home());
}
}
assertEquals()断言两个参数值相等,否则报错。
springmvc
javaConfig配置
1.配置DispatcherServlet
package com.maaoooo.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
/**
* @author lzr
* @date 2020/7/13 08:15:52
* @description
*/
public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootConfig.class};
}
//DispatchServlet加载应用上下文时,使用java配置类中的bean
protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebConfig.class};
}
//表示处理所有进入应用的所有请求
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
2.最小但可用的spring mvc配置 WebConfig
package com.maaoooo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
* @author lzr
* @date 2020/7/13 08:27:54
* @description
*/
@Configuration
@EnableWebMvc
@ComponentScan("com.maaoooo.web")
public class WebConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
3.RootConfig
package com.maaoooo.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
/**
* @author lzr
* @date 2020/7/13 08:28:00
* @description
*/
@Configuration
@ComponentScan(basePackages = "com.maaoooo", excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)})
public class RootConfig {
}
4.编写最基本的控制器
import com.maaoooo.web.HomeController;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* @author lzr
* @date 2020/7/13 09:00:05
* @description
*/
public class HomeControllerTest {
@Test
public void testhomepage() {
HomeController homeController = new HomeController();
assertEquals("home", homeController.home());
}
}
5.使用断言来测试返回的字符串
import com.maaoooo.web.HomeController;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* @author lzr
* @date 2020/7/13 09:00:05
* @description
*/
public class HomeControllerTest {
@Test
public void testhomepage() {
HomeController homeController = new HomeController();
assertEquals("home", homeController.home());
}
}
5.1用mock spring Mvc测试
发起了对”/“的请求,并断言结果视图为home.
import com.maaoooo.web.HomeController;
import org.junit.Test;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MockMvcBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.junit.Assert.assertEquals;
/**
* @author lzr
* @date 2020/7/13 09:00:05
* @description
*/
public class HomeControllerTest {
@Test
public void testhomepage() throws Exception {
HomeController homeController = new HomeController();
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(homeController).build();
mockMvc.perform(MockMvcRequestBuilders.get("/")).andExpect(MockMvcResultMatchers.view().name("home"));
}
}
7.17 Friday
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.5.3</version>
</dependency>
shiroConfig
package com.maaooo.shirodemo.config;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.spring.config.ShiroConfiguration;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import sun.security.krb5.Realm;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author lzr
* @date 2020 07 16 23:15
* @description
*/
@Configuration
public class ShiroConfig {
//ShiroFilterFactoryBean
@Bean
public ShiroFilterFactoryBean getBean(@Qualifier("manager") DefaultSecurityManager securityManager){
ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
bean.setSecurityManager(securityManager);
Map<String,String> map=new LinkedHashMap<>();
map.put("/add","authc");
bean.setFilterChainDefinitionMap(map);
bean.setLoginUrl("/login");
return bean;
}
//DefaultSercurityManger
@Bean("manager")
public DefaultWebSecurityManager getManager(@Qualifier("realm") UserRealm realm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(realm);
return securityManager;
}
//创建realm对象 自定义
@Bean("realm")
public UserRealm getRealm() {
return new UserRealm();
}
}
自定义realm
package com.maaooo.shirodemo.config;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
/**
* @author lzr
* @date 2020 07 16 23:17
* @description
*/
public class UserRealm extends AuthorizingRealm {
//授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
System.out.println("授权");
return null;
}
//认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
return null;
}
}