软件工程之获小黄衫感言

获得感言

当收到消息的那一刻,我才想起开学时老师说过的'小黄衫',很意外也很惊喜。

致谢

感谢彭老师对我们小组的肯定,感谢邹欣老师、周筠老师背后的构建之法团队,《构建之法》这本书中把枯燥的理论概念讲解得非常生动,寓教于乐,深入浅出,举出的例子也是形象而易懂,读完之后很受启发。

个人收获

经过一学期软件工程课程的学习以及《构建之法》带来的启发,我从理论和实践2方面了解的一个完整的软件的开发过程,软件工程团队应该如何配合,分工合作直至完成任务。
也学会了一系列编程技能,比如优化程序效率,github团队开发.

解决问题案例:

问题

首次编写前后端分离项目的时候,前端向后端发送数据请求,总是拿不到想要的json数据.

分析

经过向大佬请教和使用百度搜索,最终发现这是一个跨域的问题.出于浏览器的安全策略,收到同源策略的限制,当前域名的js只能读取同域下的窗口属性。什么叫做同源策略?就是不同的域名, 不同端口, 不同的协议不允许共享资源的,保障浏览器安全。

解决

Http协议中的请求头Origin
用来说明请求从哪里发起的,包括,且仅仅包括协议和域名。
这个参数一般只存在于CORS跨域请求中,可以看到response有对应的header:Access-Control-Allow-Origin。
我们可以在服务端增加一个响应头Access-Control-Allow-Origin来告诉浏览器我们支持它获取就可以了.
所以使用拦截器在Response Header中增加 "Access-Control-Allow-Origin: *"

 
import org.springframework.core.annotation.Order;
 
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
/**
 * 跨域的设置问题
 * @author tonywu
 * @version v1.0.0
 */
 
//@Component   //在启动类加了@ServletComponentScan无需加这个了
@Order(3)//设置优先级加载
//@ServletComponentScan  //加载启动类上了
@WebFilter(urlPatterns = "/*",filterName = "ACAFilter")
public class ACAFilter implements Filter {
 
    /**
     * 初始化
     * @param filterConfig FilterConfig
     * @throws ServletException
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
 
    /**
     * 过滤
     * @param servletRequest
     * @param servletResponse
     * @param filterChain
     * @throws IOException
     * @throws ServletException
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse)servletResponse;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        //response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", ":x-requested-with,content-type");
        //((HttpServletResponse)servletResponse).setHeader("Access-Control-Allow-Origin", "*");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("to access control allow origin");
    }
 
    /**
     * 销毁
     */
    @Override
    public void destroy() {
    }
}

关于团队

因为首次进行团队开发,很遗憾没有让每个团队成员都参与到代码的编写中来.但是每个人不管是用例模型的设计,还是需求文档的编写,都尽出自己的一份力量,为这个团队的项目做出了必要的贡献.

最后

希望自己继续加油,提高自己的专业能力.

原文地址:https://www.cnblogs.com/yc9064/p/13308825.html