Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
guns-vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
guns-vip
Commits
f61eb773
Commit
f61eb773
authored
Apr 29, 2017
by
fsn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善readme
parent
983ea9f5
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
196 additions
and
1 deletions
+196
-1
README.md
+196
-1
No files found.
README.md
View file @
f61eb773
#Guns
#Guns
极简代码设计,容易上手的后台管理系统!
拿来即用!整合主流的springmvc + mybatis-plus + beetl!
通用后台管理系统!代码设计简洁,清晰,
拿来即用!整合主流的springmvc + mybatis-plus + beetl!
##功能简介
##功能简介
1.
用户管理
1.
用户管理
...
@@ -123,6 +123,201 @@ public class DataSourceConfig implements EnvironmentAware {
...
@@ -123,6 +123,201 @@ public class DataSourceConfig implements EnvironmentAware {
}
}
```
```
##零web.xml配置
```
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
// spring应用上下文
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootSpringConfig.class};
}
// springmvc 上下文
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}
// 将DispatcherServlet映射到"/"
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
// 通过重载这个方法可以对DispatcherServlt进行额外的配置
@Override
protected void customizeRegistration(Dynamic registration) {
// 上传文件路径的配置
registration.setMultipartConfig(new MultipartConfigElement("e:/tmp"));
}
// 这里注册的Filter只能过滤DispatherServlet
@Override
protected Filter[] getServletFilters() {
return new Filter[]{};
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
// Apache Shiro
FilterRegistration.Dynamic shiroFilter = servletContext.addFilter("shiroFilter", new DelegatingFilterProxy());
shiroFilter.setInitParameter("targetFilterLifecycle", "true");
shiroFilter.addMappingForUrlPatterns(null, false, "/*");
// Encoding Filter
FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encodingFilter",
new CharacterEncodingFilter());
encodingFilter.setInitParameter("encoding", "UTF-8");
encodingFilter.setInitParameter("forceEncoding", "true");
encodingFilter.addMappingForUrlPatterns(null, false, "/*");
// 用来非Controller层获取HttpServletRequest
servletContext.addListener(RequestContextListener.class);
servletContext.addListener(ConfigListener.class);
//防止xss攻击的filter
FilterRegistration.Dynamic xssFilter = servletContext.addFilter("xssSqlFilter",
new XssFilter());
xssFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
super.onStartup(servletContext);
}
/**
* 添加其他servlet
*
* @param servletContext
*/
@Override
protected void registerDispatcherServlet(ServletContext servletContext) {
super.registerDispatcherServlet(servletContext);
try {
ServletRegistration.Dynamic dynamic = servletContext.addServlet("DruidStatView", StatViewServlet.class);
dynamic.addMapping("/druid/*");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
###springmvc配置
```
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.stylefeng.guns.**.controller", "com.stylefeng.guns.common.controller"})
@EnableAspectJAutoProxy
@Import({ControllerAopConfig.class})
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
// beetl的配置
@Bean(initMethod = "init")
public BeetlConfiguration beetlConfiguration() {
BeetlConfiguration beetlConfiguration = new BeetlConfiguration();
beetlConfiguration.setConfigFileResource(new ClassPathResource("beetl.properties"));
return beetlConfiguration;
}
// beetl的视图解析器
@Bean
public BeetlSpringViewResolver beetlViewResolver() {
BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
beetlSpringViewResolver.setConfig(beetlConfiguration());
beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
beetlSpringViewResolver.setOrder(0);
return beetlSpringViewResolver;
}
// 配置静态资源的处理,对静态资源的请求转发到servlet容器中默认的servlet上(对静态资源的请求不做处理)
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
// 文件上传用的resolver
@Bean
public MultipartResolver multipartResolver() {
return new StandardServletMultipartResolver();
}
// 校验器的配置
@Bean
public LocalValidatorFactoryBean validator(ReloadableResourceBundleMessageSource messageSource) {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
localValidatorFactoryBean.setProviderClass(HibernateValidator.class);
localValidatorFactoryBean.setValidationMessageSource(messageSource);
return localValidatorFactoryBean;
}
// 国际化消息资源文件配置(本系统中主要用于显示/错误消息定制)
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:org/hibernate/validator/ValidationMessages");
messageSource.setUseCodeAsDefaultMessage(false);
messageSource.setDefaultEncoding("UTF-8");
messageSource.setCacheSeconds(60);
return messageSource;
}
// 配置全局的验证器实例
@Override
public Validator getValidator() {
return this.validator(messageSource());
}
// 配置spring mvc的拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
}
// messageConverter
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(byteMsgConverter());
converters.add(stringHttpMessageConverter());
converters.add(fastJsonHttpMessageConverter());
super.configureMessageConverters(converters);
}
@Bean
public ByteArrayHttpMessageConverter byteMsgConverter() {
return new ByteArrayHttpMessageConverter();
}
@Bean
public StringHttpMessageConverter stringHttpMessageConverter() {
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
List<MediaType> list = new ArrayList<MediaType>();
list.add(MediaType.TEXT_PLAIN);
stringHttpMessageConverter.setSupportedMediaTypes(list);
return stringHttpMessageConverter;
}
@Bean
public FastJsonHttpMessageConverter4 fastJsonHttpMessageConverter() {
FastJsonHttpMessageConverter4 convert = new FastJsonHttpMessageConverter4();
List<MediaType> list = new ArrayList<MediaType>();
list.add(MediaType.TEXT_HTML);
list.add(MediaType.APPLICATION_JSON_UTF8);
convert.setSupportedMediaTypes(list);
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setFeatures(Feature.AllowArbitraryCommas, Feature.AllowUnQuotedFieldNames,
Feature.DisableCircularReferenceDetect);
fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullStringAsEmpty);
fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
convert.setFastJsonConfig(fastJsonConfig);
return convert;
}
}
```
##效果图
##效果图


...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment