关于tomcat7使用myeclipce 10工具的前后端跨域问题总结

使用工具:myeclipce 10,tomcat7

首先说明一下,这是一个web项目,我的跨域有一个

--->config.xml文件(如下)

<?xml version="1.0" encoding="utf-8" ?>
 <taxrates>
  <taxrate key="url">
    <value>http://127.168.0.1:8080/PriceTag/</value>
    <name>后台数据交互地址</name>
  </taxrate>
  <taxrate key="urlFile">
    <value>http://127.168.0.1:8080/PriceTag/UploadController/upload</value>
    <name>上传文件地址</name>

  </taxrate>

</taxrates>

</xml>

--->通过js的方式获取后台数据交互地址

js(如下)

<script>

//读取配置文件
function readXML(id){
    var val="";
    $.ajax({
        url: "config/config.xml",
        dataType: 'xml',
        type: 'GET',
        async:false,
        timeout: 2000,
        error: function(xml)
        {
            HJSJ.prompts("error","加载XML 文件出错!");
        },
        success: function(xml)
        {
            $(xml).find("taxrate").each(function(i)
            {
                if($(this).attr("key")==id){
                    val= $(this).children("value").text();
                }
            });
        }
    });
    return val;
}

</script>

随后就是一个简单的ajax请求了,需要注意的是,传输到后台的都是json数据,我们定义一个js数组。需要转换成JSON.stringify("parameter")类型,parameter为存放的值,后台才能接收到。我使用的是mybatis所以直接用字符串接受。

试例:

@Controller("LoginController")
@RequestMapping(LoginController.Location)
public class LoginController extends BaseController{
    public static final String Location = "/web_login";
        //登录
        @RequestMapping(value="/login",method=RequestMethod.POST)
        public @ResponseBody JsonCrudModel<String> login(@RequestBody String data,HttpServletRequest request,HttpServletResponse response) throws Exception{    
            final JsonCrudModel<String> result = new JsonCrudModel<String>();
        
            if (data==null || data.equals("")) {
                result.setCode(JsonCrudModel.Status_Parameter);
                result.setMsg("参数有误");
                return result;
            }
            try {
                //1.创建JSON解析对象(两条规则的提现:大括号用JSONObject,注意传入数据对象)-->这里解析会再封装成一个方法调用
                JSONObject jObj = new JSONObject(data);  
                //System.out.println(jObj);
                JSONObject jObj1 = jObj.getJSONObject("parameter");
                String userName = jObj1.getString("userName").trim();
                String password = jObj1.getString("password").trim();
                //String token = jObj.getString("token");
                //String machine = jObj.getString("machine");
                String pwd = PasswordUtils.encryptPassword(password,"hj2018", "!");
                //System.out.println(pwd);
                User user = userService.getLoginUser(userName, pwd);//这里是数据库验证

    }

}

以上是一个请求的流程。

现在我们没有配置,故请求是发送不过去的。

一,我们在web.xml中配置如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>    
    <!-- 中文过滤器 -->
    <filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>com.hjsj.filter.EncodingingFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
 
  <!-- 跨域请求 -->
    <filter>
        <filter-name>CorsFilter</filter-name>
        <filter-class>com.cn.filter.CorsFilter</filter-class>------->这里是我自己项目过滤器的位置
    </filter>
    <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

   <!--  springmvc -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
      
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>

二,com.an.filter包下CorsFilter

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
/**
 * TODO:
 *
 * @author: jonath
 * @date: 17-3-2
 */
public class CorsFilter implements Filter {
 
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
 
    }
 
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
        httpResponse.addHeader("Access-Control-Allow-Origin", "*");
        httpResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        httpResponse.setHeader("Access-Control-Allow-Methods", "GET, PUT, DELETE, POST");
        filterChain.doFilter(servletRequest, servletResponse);
    }
 
    @Override
    public void destroy() {
 
    }
}

三,跨域所需要的jar包

cors-filter-1.7.1-sources.jar

cors-filter-2.5.jar

java-property-utils-1.9.1-sources.jar

junit-4.10-sources.jar

servlet-api-2.5-sources.jar

这里我用jar包名称,方便记忆。


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值