关于使用VUE与Servlet交互时容易出现的问题
1.跨域问题(Access-Control-Allow-Origin)
很多初学的小伙伴在这里都会碰到一个问题,就是“明明我都写对了,为什么还是无法发送请求?”这时候一般多见于前台。会报出跨域失败的问题,如下图
这个时候在我们后台设置一个过滤器,注意!是在你的web工程中新建一个过滤器,允许跨越主机访问就可以了。具体的步骤如下:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet Filter implementation class CorsFilter
*/
@WebFilter(filterName="/CorsFilter",urlPatterns="/*")
public class CorsFilter implements Filter {
/**
* Default constructor.
*/
public CorsFilter() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
HttpServletResponse resp = (HttpServletResponse) response;
// 允许跨域的主机地址,允许任意domain访问
//坑:前台axios设置withCredentials: true后,Access-Control-Allow-Origin的值不可以为*
resp.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");
/* 允许跨域的请求头 */
resp.setHeader("Access-Control-Allow-Headers", "*");
/* 允许跨域的请求方法method=GET, POST, HEAD 等 */
resp.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
/* 重新预检验跨域的缓存时间 (s) */
resp.setHeader("Access-Control-Max-Age",20 * 24 * 60 * 60 + "");
/* 是否携带cookie,session支持 */
/*坑:前台axios设置withCredentials: true后,Access-Control-Allow-Origin的值不可以为*/
resp.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(request, resp);
// pass the request along the filter chain
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
然后保存,刷新下页面,然后就可以跨地址请求了。
2.sql问题(Unknown column ‘XXXX’ in ‘where clause’)
先说下异常:Unknown column ‘XXXX’ in ‘where clause’
这个问题不管新手老手有时候都会出现。。。我本人在写的时候有时也会出现这个问题,其实很简单,但也不容易发现。具体解决的方法如下:
XXX是你数据库中的字段名称,这种情况一般是Sql语句的错误,Sql中的字段名与数据库中的不一致
比如数据库中的字段名称为user_name,但是后台编写时语句为select * from t_user where username=xxx
user_name与username不匹配,所以抛出异常,并且前台也会抛出500异常,因为根本查不到信息。
前后台一起写的时候很容易蒙圈。。。小毛病,问题不大,仔细排查即可
小弟写的不好,只是想把自己碰到的问题分享一下。请各位大神见谅。。。。谢谢!