最近做了一个项目,需要用到前台提交后台的方式处理表单数据,在使用ajax的过程中走了不少弯路,在此记录一下:
标准的Ajax请求包括5步:https://blog.csdn.net/a17634399794/article/details/82747520
而使用Jquery框架的话,相对比较简单一些,具体步骤如下:
附:尚硅谷Ajax视频教程:https://www.bilibili.com/video/av36990155/?p=7
//首先需要将js包加载完成
然后需要在该web工程——src上新建servlet(servlet名字与url中checkUserName相同),不然无法找到对应的servlet容器的路径。
勾选Get或Post方法(或者两者都勾选),然后在Post方法下使用request.getParameter("Aar")(Aar表示ajax中args参数名)得到json对象,用属性名取得对应的属性值即可。
1)在java项目中,只需要引入mysql-connector-java-5.1.7-bin.jar就可以运行java项目。
2)在web项目中,必须把mysql-connector-java-5.1.7-bin.jar导入到tomcat或项目的lib目录下面!
当Class.forName("om.mysql.jdbc.Driver");时myeclipse是不会去查找字符串,不会去查找驱动的。所以只需要把mysql-connector-java-5.1.7-bin.jar 拷贝到tomcat或项目下lib目录就可以了。
3)没有把它添加到工程路径,右键lib->add to path即可。
如果启动服务器时提示如下界面信息,则tomcat端口被占用,
此时,需要查看占用相关端口的进行的PID(进程号)并结束对应进程,然后重新启动即可。
查看进行PID及结束对应进程方法:https://www.cnblogs.com/hjchoset/p/6027589.html
比如,我从数据库中查询到的表达式(字符串类型)如下:Aar*Aar*(-0.0004)+Aar*0.035+0.034+0.124*Sar,需要将其中的Aar和Sar替换为前端的输入值,并计算此表达式的值,在java中使用ScriptEngineManager这个类的方法来实现。具体代码如下:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class test
{
public static void main(String[] args) throws Exception
{
String expr = "x+y*10";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
engine.put("x", 5);
engine.put("y", 5);
Object result = engine.eval(expr);
Double re= Double.parseDouble(result.toString());
System.out.println(re*10);
}
}
https://blog.csdn.net/qq_20757489/article/details/86668190
参考:https://blog.csdn.net/tt336798/article/details/81304665
后端代码如下所示:
package fireProject.servlet;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
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 fireProject.servlet.GetMysqlConn;
/**
* Servlet implementation class GetSlectedName
*/
@WebServlet("/getSlectedName")
public class GetSlectedName extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ResultSet re = null;
String hangyeName = request.getParameter("hangyeName"); //从前端获取到传递的行业名
String colName = request.getParameter("colName"); //从前端获取到传递的行业名
String sql = "select distinct " + colName + " from " + hangyeName; //数据库查询语句
String result = null;
StringBuilder stringBuilder = null;
System.out.println(sql);
re = GetMysqlConn.getSqlResult(sql); //调用相关方法进行数据库查询
try {
while (re.next()) {
result = re.getString(colName);
if (stringBuilder == null) {
stringBuilder = new StringBuilder(result);
} else {
stringBuilder.append("|");
stringBuilder.append(result);
}
}
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
//返回给前端jsp页面计算结果
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
response.getWriter().print(stringBuilder.toString());
}
}
6、设置外网访问本地的javaweb项目。
可以使用花生过域名穿透服务。需要自己去注册一个账号,免费的每个月会送1G流量的,带宽为1M。