Tomcat 8+ mysql 8 +android studio 开发环境的坑

13 篇文章 0 订阅
3 篇文章 0 订阅

【趁热打铁写个笔记】
写了个简单的程序测试 从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文件

虚拟目录

  <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

	       <Context path="" docBase="StudentERP" debug="0" />

      </Host>

主要 < 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<String>() {
            @Override
            public void onResponse(String response) {
                if (response.equals("record inserted")) {
                    //完成 数据的发送 成功

                    showMesage("Send ok saveed successfully");
                }

            }
        }, new Response.ErrorListener() {
            @Override

在这里插入图片描述
这部分没有问题,

  1. 服务器端 register.jsp文件 还有一个 与 java 1.8 以下不兼容的坑.
    于是我将环境变量从 1.7升级到1.8 问题解决
    脚本才正确识别 mysql-connector-java-8.0.16.jar 这个版本

	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
		}

  1. 其实如果 Android 客户的直接使用 jdbc 驱动访问 mysql 数据也会出现这个坑
    只要在模块中加入强制编译 到 jdk 1.8 就可以编译通过.
    在这里插入图片描述

最后看看,

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值