web项目异常问题(持续更新)

关于使用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异常,因为根本查不到信息。
前后台一起写的时候很容易蒙圈。。。小毛病,问题不大,仔细排查即可
小弟写的不好,只是想把自己碰到的问题分享一下。请各位大神见谅。。。。谢谢!

猜你喜欢

转载自blog.csdn.net/aa245455945/article/details/105306471