Java Web项目遇到的问题总结

 

最近做了一个项目,需要用到前台提交后台的方式处理表单数据,在使用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容器的路径。

 

Java Web项目遇到的问题总结_第1张图片

勾选Get或Post方法(或者两者都勾选),然后在Post方法下使用request.getParameter("Aar")(Aar表示ajax中args参数名)得到json对象,用属性名取得对应的属性值即可。

1、Submit表单提交方式总会导致页面刷新,而button提交方式,如果结合Ajax技术可以达到局部提交效果。


2、Web项目中若提示can not find com.jdbc.Driver,可能有如下原因:


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即可。

3、tomcat端口被占用的解决方法。

如果启动服务器时提示如下界面信息,则tomcat端口被占用,

Java Web项目遇到的问题总结_第2张图片

此时,需要查看占用相关端口的进行的PID(进程号)并结束对应进程,然后重新启动即可。

查看进行PID及结束对应进程方法:https://www.cnblogs.com/hjchoset/p/6027589.html

4、实现从数据库中查到数学公式,并替换变量进行计算

比如,我从数据库中查询到的表达式(字符串类型)如下: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);    
        }   
}

 

5、XAMPP中MySQL和本地MySQL冲突的解决办法:(用修改注册表的方法)

https://blog.csdn.net/qq_20757489/article/details/86668190

6、使用ajax实现动态添加下拉框

参考: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。

Java Web项目遇到的问题总结_第3张图片

 

你可能感兴趣的:(Java Web项目遇到的问题总结)