zoukankan      html  css  js  c++  java
  • 软件工程之获小黄衫感言

    获得感言

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

    致谢

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

    个人收获

    经过一学期软件工程课程的学习以及《构建之法》带来的启发,我从理论和实践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() {
        }
    }
    

    关于团队

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

    最后

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

  • 相关阅读:
    IE hasLayout详解
    seajs引入jquery
    jquery实现轮播插件
    CSS视觉格式化模型
    js事件冒泡和事件捕获详解
    你尽力了么===BY cloudsky
    前向否定界定符 python正则表达式不匹配某个字符串 以及无捕获组和命名组(转)
    php safe mode bypass all <转>
    WAF指纹探测及识别技术<freebuf>
    linux集群管理<转>
  • 原文地址:https://www.cnblogs.com/yc9064/p/13308825.html
Copyright © 2011-2022 走看看