开发springboot项目,遇到的一些问题总结

首先看一下我的项目目录吧
项目目录

1,添加拦截器

我们做项目肯定要用到拦截器这个功能哈,没登录的话一些页面我们是不能访问的哈,这里是用到了HandlerInterceptor。
在这里插入图片描述
分别在图中的位置创建2个目录和2个文件:
WebConfig:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration//标识这是一个配置类
public class WebConfig implements WebMvcConfigurer {/*** 重写addCorsMappings()解决跨域问题* 配置:允许http请求进行跨域访问*/@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")//指哪些接口URL需要增加跨域设置.allowedOriginPatterns("*")//指的是前端哪些域名被允许跨域.allowCredentials(true)//需要带cookie等凭证时,设置为true,就会把cookie的相关信息带上.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")//指的是允许哪些方法.maxAge(3600);//cookie的失效时间,单位为秒(s),若设置为-1,则关闭浏览器就失效}/*** 重写addInterceptors()实现拦截器* 配置:要拦截的路径以及不拦截的路径**/@Overridepublic void addInterceptors(InterceptorRegistry registry) {//注册Interceptor拦截器(Interceptor这个类是我们自己写的拦截器类)InterceptorRegistration registration = registry.addInterceptor(new GlobalInterceptor());//addPathPatterns()方法添加需要拦截的路径registration.addPathPatterns("/**");                      //所有路径都被拦截//excludePathPatterns()方法添加不拦截的路径registration.excludePathPatterns(                         //添加不拦截路径"/login.html",            //登录页面的地址【不拦截】"/","/login","/toLogin",//"/**/*.html",            //html静态资源"/**/*.js",              //js静态资源"/**/*.css"              //css静态资源);}
}

GlobalInterceptor:

import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 拦截器*/
public class GlobalInterceptor implements HandlerInterceptor {/*** 在请求处理之前进行调用(Controller方法调用之前)*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {System.out.println("执行了Interceptor的preHandle方法");try {//统一拦截(查询当前session是否存在loginName用户信息)(这里loginName会在每次登陆成功后,写入session)String loginName = (String)request.getSession().getAttribute("loginName");if (loginName != null) {return true;}else{//这里设置拦截以后重定向的页面,一般设置为登陆页面地址request.getContextPath() +response.sendRedirect("/toLogin");return false;}} catch (IOException e) {e.printStackTrace();}return true;//如果设置为false时,被请求时,拦截器执行到此处将不会继续操作//如果设置为true时,请求将会继续执行后面的操作}
}

2,设置controller跳转

设置输入端口就直接能进入我们的login.html页面(或者你想要进的首页)

@RequestMapping("/")
public ModelAndView login(){ModelAndView mv = new ModelAndView("login.html");return mv ;
}

这里设置后,我们输入localhost:80回车就能进入login.html,不需要输入localhost:80/login.html。(当然这个80端口是在application文件里面配置,大家应该知道吧)

3,打jar包发布到Linux服务器

打jar包发布到Linux服务器,需要配置pom文件,不然的话发布到服务器上会报404,。

<build><resources><resource><directory>${basedir}/src/main/webapp</directory><targetPath>META-INF/resources</targetPath><includes><include>**/**</include></includes></resource><resource><directory>src/main/resources</directory><filtering>false</filtering><includes><include>**/**</include></includes></resource></resources>
</build>

就是在里添加这些配置信息,指定页面位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

elasticsearch根据时间范围查询总条数

根据创建时间来查询总条数 Autowired private ElasticsearchTemplate elasticsearchTemplate;String morning "2021-06-01"; String times "2021-06-02"; BoolQueryBuilder bqb QueryBuilders.boolQuery(); bqb.must(QueryBuilders.rangeQuery("cr…

利用tushare进行对兴业银行股价的爬取,并使用numpy进行分析

import sysimport tushare as tsimport numpy as npdatats.get_h_data(601066)print(data)#读出兴业银行7列数据date open high close low volume amount data.to_csv(E:/csv statistic/day/601066.csv) 把读取的股票数据存入某个内存空间中 #开始读某…

elasticsearch根据某个字段来查询,以及通过时间筛选

elasticsearch根据某个字段来查询&#xff0c;以及通过时间筛选 String startTime "2021-06-01"; String endTime "2021-06-02"; BoolQueryBuilder bqb QueryBuilders.boolQuery(); bqb.must(QueryBuilders.matchPhraseQuery("userId",userSt…

centOS下lnamp安装

首先安装apache,mysql ,最后安装php 1>apache安装 安装&#xff1a;yum install -y httpd 运行&#xff1a;/bin/systemctl start httpd.service 执行完运行命令之后是看不到效果的&#xff0c;这时候再输入查看apache服务状态命令来查看服务是否已经启动&#xff1a; 查看状…

java使用itext填充pdf模板,超简单教学,有手就行

java使用itext填充pdf模板1、先去建一个Word文件&#xff0c;设置好想要填充的地方&#xff0c;留好位置&#xff0c;设置好下划线2、将Word另存为pdf3、打开电脑中的Adobe Acrobat pro DC&#xff08;这个应该win10 都有&#xff0c;搜索一下就出来了&#xff09;&#xff0c;…

java使用itext将图片放到pdf模板的指定位置

java使用itext将图片放到pdf模板的指定位置前面的准备步骤可以参考我的上一篇文章这里直接上代码这里用的图片是路径的形式&#xff0c;还有种情况是图片是base64的时候&#xff0c;这种情况就需要转一下图片格式了&#xff0c;具体代码如下&#xff1a;前面的准备步骤可以参考…

KVM使用

这里使用的是Ubuntu18.04桌面版虚拟机 关于KVM可以看一下我之前的博客,有一些简单的介绍。 1.在打开虚拟机之前先开启此虚拟机的虚拟化功能。 2.安装KVM及其依赖项 wywy-virtual-machine:~$ sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager 3.安装完成…

mybatis-plus3.5.1学习笔记

1、ID 1>id策略有6种&#xff1a; 想要id自增就在id上面添加 TableId(type IdType.AUTO)mybaits-plus的默认的主键策略是&#xff1a; TableId(type IdType.ID_WORKER)这样生成的是19位的数字id。 有的人喜欢使用UUID&#xff1a; TableId(type IdType.UUID)2、cre…

Python网络编程之socket编程

什么是Socket&#xff1f; Socket是应用层与TCP/IP协议族通信的中间软件抽象层&#xff0c;它是一组接口。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c;它把复杂的TCP/IP协议族隐藏在Socket接口后面&#xff0c;对用户来说&#xff0c;一组简单的接口就是全…

idea必装插件

1、lombok 这个是自动生成getter,setter的插件工具&#xff0c;现在idea已经集成了&#xff0c;好像不用单独去插件市场下载。 2、Free MyBatis Tool 官方话术&#xff1a; Free MyBatis Tool 是一款增强idea对mybatis支持的插件 主要功能如下&#xff1a; 生成mapper xml文…

mongodb查询分页优化

mongodb查询分页优化 转自&#xff1a;https://blog.csdn.net/chunqiuwei/article/details/11669885项目中需要用mongodb来进行数据测存储和查询,其中涉及到分页:分页的要求如下 1)每页显示10条 由于数据量太大,cursor.count()获取的符合条件的数据量也很大,导致分页得分好几万…

Contest Hunter 0103最短Hamilton路径 【状压dp】 By cellur925

题目传送门 Hamilton路径的定义&#xff1a;从0&#xff08;起点&#xff09;到n-1&#xff08;终点&#xff09;不重不漏地经过每个点恰好一次。 由于数据范围非常小&#xff0c;考虑状压。如NOIP2017宝藏一题&#xff0c;把状态压缩设为n个点是否已到达的二进制数。1表示到达…

Failed to execute operation: No such file or directory解决办法

在给Linux服务器安装docker的时候报错解决办法&#xff1a;1&#xff0c;在/etc/systemd/system/目录下创建docker.service2&#xff0c;进入docker.service文件3&#xff0c;将下面的代码复制进去4&#xff0c;复制进去以后&#xff0c;按Esc&#xff0c;在输入&#xff1a;wq…

The goal you specified requires a project to execute but there is no POM in this directory

使用maven安装jar包到本地仓库时遇到The goal you specified requires a project to execute but there is no POM in this directory我的命令是 mvn install:install-file -DfileD:\cao\gofastdfs-2.0.jar -DgroupIdcom.aaa-DartifactIdgofastdfs -Dversion2.0 找遍了百度才…

python实现二叉树的镜像

题目描述 操作给定的二叉树&#xff0c;将其变换为源二叉树的镜像。输入描述: 二叉树的镜像定义&#xff1a;源二叉树 8/ \6 10/ \ / \5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5 # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # …

java使用itext生成pdf,超简单教学,有手就行

前言&#xff1a;以前出过两期用itext填充pdf的文章&#xff0c;有人说那个会那字体加入到pdf中&#xff0c;导致pdf占用内存过大&#xff0c;那么今天就来分享一期另外的方法。 java使用itext生成pdf1、导包2、直接贴代码&#xff0c;然后大家看注释3、效果1、导包 <depen…

2018-2019-1 20165221 《信息安全系统设计基础》第一周学习总结

2018-2019-1 20165221 《信息安全系统设计基础》第一周学习总结 教材学习总结 有关vim 打开方式&#xff1a;vim [文件名]按i会进入insert模式&#xff0c;可以对代码进行编辑按Esc会进入普通模式&#xff0c;此时可以使用快捷键进行编辑&#xff0c;编辑方式为&#xff1a; 指…

itext5固定段落Paragraph,指定段落位置

前几期分析了怎么用itext生成pdf&#xff0c;有兴趣的可以去看看。 1&#xff0c;java使用itext生成pdf&#xff0c;超简单教学&#xff0c;有手就行 2&#xff0c;java使用itext填充pdf模板&#xff0c;超简单教学&#xff0c;有手就行 然后现在有了新的需求&#xff0c;需…

wordcount C

Gitee 代码链接&#xff1a;https://gitee.com/huangxue1111/codes/12rfs3ztj5ga8ymce7qi910 #include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#define IN 1#define OUT 0void main() {FILE *fp;int length;fp fopen("…

PS中如何使用通道计算来进行美白

打开本机的Photoshow&#xff0c;把要美白的图片添加进来。 通过快捷键ctrlj 创建一个图层副本。 然后选择通道中的蓝色&#xff0c;复制通道&#xff0c;这里说明一下为什么要选择蓝色&#xff1a;因为蓝色和绿色是较暗的&#xff0c;把暗的选出来&#xff0c;目的是为了更…