这两天在家上网课,老师布置作业,让写一个前后端的交互程序,只要实现很简单的功能就行,前端通过Ajax把数据发给后端,后端打印收到的前端数据,然后返回给前端信息打印出来,效果如下图所示:
因为寒舟上个学期的大作业用Eclipse通过Ajax实现过前后端交互,所以认为这还是很简单的,但是因为要用IDEA,之前从来没有用过,所以出了不少问题,在这里记录一下,希望帮到需要的朋友。
1.IDEA运行卡顿:
IDEA刚刚装上之后,运行的十分卡顿,甚至说敲鼠标都卡的要死,连代码都移动不了,一度想要砸了电脑,然而感觉我的电脑虽然辣鸡,但是也不至于这样啊,一番搜索研究之后,找到了解决方案:
(1)修改IDEA分配到的运行内存:
点击顶部的选项***Help -->EditCustom VM Options***,进入如下界面,修改掉几个参数,根据自己电脑内存分配给IDEA更大的内存,(我的电脑为8G):
(2)关掉不必要的插件:
点击 FIle–>Settings–>Pulgins,选择右侧的installed,把不需要的插件关掉即可,如果关的过程中,IDEA提出警告,那么你最好把那个再给勾上:
2.IDEA网页刷新不及时:
有时候想看一下自己修改的代码效果如何,哪知修改之后再次打开网页,仍然是上次的结果,不论是刷新网页,清除浏览器缓存,重启TomCat都不管用,后来查询得知,需要将TomCat服务器进行相关设置,点击RUN–>Edit Cofigurations,选择TomCat服务器,将刷新更改为实时刷新的:
3.将网页在服务端运行之后,常常报错404,显示找不到网页
首先选择TomCat服务器,点击Edit,把浏览器打开的url修改为此项目地址,然后Apply,然后每次运行项目时,首先按照上图将TomCat服务器打开运行,然后运行所想要执行的文件时,右击运行即可,一定要先运行TomCat服务器,然后再运行各个网页。
4.Ajax连接Servlet显示成功,然而收不到Servlet返回的数据
核心代码一样,在Eclipse里面可以正常运行,然后在IDEA里面收不到Servlet返回的数据,头秃了一下午,各种环境,配置调了好多,最后发现,Servlet的doPost()里面,需要调用doGet(),完整代码如下所示:
(前端用的是JQueryMobile)
前端:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://apps.bdimg.com/libs/jquerymobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="https://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="https://apps.bdimg.com/libs/jquerymobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script>
$(document).ready(function(){
$("p").on("tap",function(){
$(this).hide();
});
$("button").click(function(){
alert("出来吧!服务端!")
$.post("TryServlet",{
name:"菜鸟寒舟",
url:"http://www.sasuke.com"
},
function(data,status){
alert("数据: \n" + data + "\n状态: " + status);
});
});
});
</script>
</head>
<body>
<div data-role="page" id="pageone">
<div data-role="header">
<h1>页面标题</h1>
</div>
<div data-role="main" class="ui-content">
<p>敲击我,我会消失。</p>
<p>敲击我,我会消失。</p>
<p>敲击我,我也会消失。</p>
<div class="ui-content">
<button class="ui-btn">后台按钮</button>
</div>
</div>
<div data-role="footer">
<h1>页面底部内容</h1>
</div>
</div>
</body>
</html>
后端:
package hahaha;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = "/TryServlet")
public class TryServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String msg="你好,我是服务端";
System.out.println(msg);
String func1=request.getParameter("name");
String func2=request.getParameter("url");
System.out.println("name:"+func1);
System.out.println("url:"+func2);
response.setCharacterEncoding("utf-8");
response.getWriter().print(msg);
}
}
转载请注明出处