【趁热打铁写个笔记】
写了个简单的程序测试 从android 提交 数据到 web 上的mysql 数据库
总不成功.其实问题不在于程序在于部署.!
1.Tomcat 8的坑
如何激活服务器.实际上就是环境变量的设置的问题.为了避免,
CATALINA_BASE 与 CATALINA_HOME 不在一个目录的坑,
设置一个 批处理文件.启动web服务器.就无需使用环境变量
set "CATALINA_BASE=%cd%"
set "CATALINA_HOME=D:\tomcat8.5"
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
call "%EXECUTABLE%" start
tomcat ins2 是分开的 Tomacat8.5 的实例分身(工作目录)
除了lib,bin 等主要目录,都复制到这个工作目录.
开始运行的时候启动 刚才写的配置批处理 startup.bat
2.web 缺省目录的坑 分烦人.网上的说的太复杂,反倒是坑越挖越大.
修改 tomcat ins2 下 conf 下的 Server.xml文件
虚拟目录
主要 < context path="" docBase=“studentERP” /> 这个.
其他的方法以后再说.主要就是将 你的工程 studentERP 目录代替了 ROOT 目录
3.jdbc:mysql 库文件包jar的坑. 提示无法解析类名的坑
解决办法就是
放入 Tomcat 主目录下的lib目录下 mysql-connector-java-8.0.16.jar
工程目录下WEB-INF下的 lib 目录 ,这个目录放入 库文件貌似没有用.
网上,谈的是 Editclipse 的WDA 工程发布所以借鉴不大.
4.客户的 Android 程序
我用的是
Android studio 在
模块
插件.直接访问服务器.
import com.android.volley.RequestQueue;
....
mRequestQueue= Volley.newRequestQueue(RegisterManActivity.this);
...
private void insertUser(final String sid1, final String sname1, final String age1, final String mobile1, final String email1, final String pass1,
String ip1) {
String url1="http://";
stringip=ip1;
String contextURLpath="/register.jsp";
String finalurl=url1+stringip+contextURLpath;
//http://192.168.2.138:8070/register.jsp
mStringRequest =new StringRequest(StringRequest.Method.POST, finalurl, new Response.Listener() {
@Override
public void onResponse(String response) {
if (response.equals("record inserted")) {
//完成 数据的发送 成功
showMesage("Send ok saveed successfully");
}
}
}, new Response.ErrorListener() {
@Override
try{
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","773abc338");
st=conn.prepareStatement("insert into studentInfo(sid,sname,age,mobile,email,pass)values(?,?,?,?,?,?)");
//set the parameters
st.setString(1,sid);
st.setString(2,sname);
st.setInt(3,Integer.parseInt(age));
st.setInt(4,Integer.parseInt(mobile));
st.setString(5,email);
st.setString(6,pass);
//execute the query
int res=st.executeUpdate();
if(res==0){ //process to result
System.out.println("record not inserted");
out.println("not rni");
}else{
System.out.println("record inserted");
out.println("record inserted");
//response to anroid app / browser windows
}
最后看看,