后端

Shiro初识

Shiro初识

Shiro学习

Shiro学习 简介 Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。 概念 https://www.w3cschool.cn/shiro/co4m1if2.html 详细 使用 依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.2</version> </dependency> 配置文件 [users] zhangsan=123456,admin lisi=123123,superadmin [roles] admin=product:create,product:delete,product:update,product:view public=product:view 读取配置类 //1.初始化SecurityManger安全管理器 DefaultSecurityManager sm = new DefaultSecurityManager(); //2.配置用户的权限信息到安全管理器中 Realm realm = new IniRealm("classpath:shrio.ini"); sm.setRealm(realm); //3.使用SecurityUtils将securityManager设置到运行环境中 SecurityUtils.setSecurityManager(sm); 因为没有slf4j的配置,运行控制台报出

java后端开发通过虚拟路径访问本地图片

通过虚拟路径访问本地图片

通过虚拟路径访问本地图片 情况说明: 之前存入在数据库中的图片地址是本地的相对路径,需要实现的是在html页面中img标签src中直接写上本地图片资源的相对路径,得以显示。 1. 错误重现 数据库: 没有做任何设置之前: 2. 解决步骤 第一步: 在Tomcat目录下找到conf文件夹,打开server.xml D:\apache-tomcat-9.0.22\conf\server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt"/> <!-- eclipse --> <Context docBase="shopping" path="/shopping" reloadble="true" source=" org.eclipse.jst.jee.server:o2o"> </Context> <!-- 在此处添加以下内容 我的图片位置为 : D:\projectdev\img\upload\item\headtitle\XXXXX.jpg --> <Context path="/upload" docBase="D:\projectdev\img\upload" crossContext="true" reloadable="true" debug="0"> </Context> </Host> 第二步: 开发工具为 Idea 快捷键: shift+alt+F10 , 进入Run小窗口 ​ 进入Tomcat设置界面: ​ 选择自己的当前项目的Tomcat: ​ 设置路径: ​ 重启tomcat: ​ 访问成功:

SpringBoot数据访问

SpringBoot 数据库访问 JDBC访问数据库 整合Druid数据源 整合MyBatis 整合JPA

SpringBoot访问数据库 springboot 默认支持很多数据源 有:Hikari,Tomcat, Dbcp2,Generic。 springboot2.X默认数据源为:Hikari。下面还会讲到切换数据源到阿里的Druid, 同时和springboot桥接进行数据库访问的方式也有很多:JDBC,Mybatis,JPA 源码:DataSourceAutoConfiguration –>PooledDataSourceConfiguration可以看到数据源的配置 @Configuration @Conditional({DataSourceAutoConfiguration.PooledDataSourceCondition.class}) @ConditionalOnMissingBean({DataSource.class, XADataSource.class}) @Import({Hikari.class, Tomcat.class, Dbcp2.class, Generic.class, DataSourceJmxConfiguration.class}) protected static class PooledDataSourceConfiguration { protected PooledDataSourceConfiguration() { } } JDBC访问数据库 1. 准备工作 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> application.yml spring: datasource: username: root password: url: jdbc:mysql://localhost:3306/jdbc driver-class-name: com.mysql.jdbc.Driver 2. 创建表 springboot创建表相关源码, 通过DataSourceInitializer拿到数据源,可以创建表结构或者表数据 //创建表结构 public boolean createSchema() { List<Resource> scripts = this.

SpringBoot与web开发(六)----SpringBoot容器

SpringBoot容器

SpringBoot 容器 SpringBoot的容器默认使用的Tomcat, 1.如何修改Servlet容器的相关配置? 修改Servlet的配置 (org.springframework.boot.autoconfigure.web.ServerProperties) server.servlet.context-path=/crud server.port=8081 2.如何注册自己的Servlet,Filter,Listener SpringBoot默认的是以jar包的方式启动嵌入Serlvet容器,没有Web.xml。 注册三大组件的方式 ServletRegistrationBean FilterRegistrationBean ServletListenerRegistrationBean /** * @program: spring-boot-restful-crud * @description: servlet配置类 * @author: YuanChangYue * @create: 2019-08-19 19:20 */ @Configuration public class MyServletConfig { @Bean public ServletRegistrationBean myServlet() { return new ServletRegistrationBean<>(new MyServlet(), "/myServlet"); } @Bean public FilterRegistrationBean myFilter() { FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new MyFilter()); registrationBean.setUrlPatterns(Arrays.asList("/hello", "/myServlet")); return registrationBean; } @Bean public ServletListenerRegistrationBean myListen() { return new ServletListenerRegistrationBean(new MyListen()); } } /** * @program: spring-boot-restful-crud * @description: 自定义Listen * @author: YuanChangYue * @create: 2019-08-19 19:42 */ public class MyListen implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.

SpringBoot与web开发(五) ---- SpringBoot 错误处理机制

SpringBoot 错误处理机制

SpringBoot 错误处理 SpringBoot 默认错误机制,返回一个错误页面和 json数据 浏览器 其它客户端 1. 原理 源码 ErrorMvcAutoConfiguration 其中有几个重要的组件: DefaultErrorAttributes : 共享信息 timestamp 时间 status 状态码 error 错误提示 exception 异常对象 message 异常信息 errors JSR303 数据校验的信息 DefaultErrorViewResolver @Override public ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) { ModelAndView modelAndView = resolve(String.valueOf(status.value()), model); if (modelAndView == null && SERIES_VIEWS.containsKey(status.series())) { modelAndView = resolve(SERIES_VIEWS.get(status.series()), model); } return modelAndView; } private ModelAndView resolve(String viewName, Map<String, Object> model) { String errorViewName = "error/" + viewName; //使用模板引擎 TemplateAvailabilityProvider provider = this.