前言
我们要做的是让在一个不在当前项目文件夹的前端页面发送Ajax请求,由一个远程servlet处理
代码
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Document</title> |
| </head> |
| <body> |
| <input type="button" value="get" id='get'> |
| <input type="button" value="POST" id='post'> |
| <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script> |
| <script> |
| let data = { |
| name: '狗剩', |
| age: 20 |
| } |
| $("#get").on('click', function() { |
| $.ajax({ |
| type: 'get', |
| contentType:'application/json', |
| url: 'http://localhost/TestServlet', |
| data: data, |
| success: (res) => { |
| console.log("res:", res) |
| } |
| }) |
| }) |
| |
| $("#post").on('click', function() { |
| $.ajax({ |
| type: 'post', |
| contentType:'application/json', |
| url: 'http://localhost/TestServlet', |
| data: JSON.stringify(data), |
| success: (res) => { |
| console.log("res:", res) |
| } |
| }) |
| }) |
| </script> |
| </body> |
| </html> |
| import javax.servlet.*; |
| import javax.servlet.http.HttpFilter; |
| import javax.servlet.http.HttpServletRequest; |
| import javax.servlet.http.HttpServletResponse; |
| import java.io.IOException; |
| |
| public class Filter extends HttpFilter { |
| |
| @Override |
| public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { |
| |
| System.out.println("Filter 过滤器 执行 了"); |
| HttpServletRequest request = (HttpServletRequest)req; |
| HttpServletResponse response = (HttpServletResponse)resp; |
| |
| response.setHeader("Access-Control-Allow-Origin", "*"); |
| |
| response.setHeader("Access-Control-Allow-Methods", "POST, DELETE,PUT,GET,OPTIONS"); |
| |
| response.setHeader("Access-Control-Max-Age", "3600"); |
| |
| response.setHeader("Access-Control-Allow-Headers", "*"); |
| |
| response.setHeader("Access-Control-Allow-Credentials", "true"); |
| |
| chain.doFilter(request, response); |
| } |
| |
| } |
| |
| import com.alibaba.fastjson.JSON; |
| import javax.servlet.ServletException; |
| import javax.servlet.ServletInputStream; |
| import javax.servlet.http.HttpServlet; |
| import javax.servlet.http.HttpServletRequest; |
| import javax.servlet.http.HttpServletResponse; |
| import java.io.BufferedReader; |
| import java.io.IOException; |
| import java.io.InputStreamReader; |
| import java.util.Map; |
| |
| public class TestServlet extends HttpServlet { |
| @Override |
| protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
| System.out.println("请求已到达-> post"); |
| request.setCharacterEncoding("utf-8"); |
| ServletInputStream inputStream = request.getInputStream(); |
| BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); |
| StringBuilder sb = new StringBuilder(); |
| String str = null; |
| while((str = br.readLine()) != null) { |
| sb.append(str); |
| } |
| System.out.println(sb.toString()); |
| |
| Map parseObject = JSON.parseObject(sb.toString(), Map.class); |
| System.out.println("parseObject:" + parseObject); |
| |
| } |
| |
| @Override |
| protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
| System.out.println("请求已到达-> get"); |
| request.setCharacterEncoding("UTF-8"); |
| String name = request.getParameter("name"); |
| int age = Integer.parseInt(request.getParameter("age")); |
| System.out.println("name:" + name + ", age:" + age); |
| |
| } |
| |
| } |
| |
| <filter> |
| <filter-name>Filter</filter-name> |
| <filter-class>Filter</filter-class> |
| </filter> |
| <filter-mapping> |
| <filter-name>Filter</filter-name> |
| |
| <url-pattern>/*</url-pattern> |
| </filter-mapping> |
| |
| <servlet> |
| |
| <servlet-name>Test</servlet-name> |
| |
| <servlet-class>TestServlet</servlet-class> |
| </servlet> |
| <servlet-mapping> |
| |
| <servlet-name>Test</servlet-name> |
| |
| <url-pattern>/TestServlet</url-pattern> |
| </servlet-mapping> |
结语
| |
| url: 'http://localhost/TestServlet' |
| |
| <url-pattern>/TestServlet</url-pattern> |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术