你好,请问是参考哪个 Demo, 麻烦发一下 Demo 的链接。

Todo demo 页面跳转都是500了,

哪个页面的跳转报错?

云端 项目 用
lean init java - spring boot

请问你是在本地运行还是在云引擎上运行?

这个错误看起来是没有配置云存储的 URL,如果你用 lean up 在本地启动的话应该会自动配置,在云引擎上也会自动配置。

本地写的,没写自己的servlet 前demo 是正常的,

对的,lean up , 还得用 deploy?

麻烦提供一下你依赖我们 sdk 的名字和版本,然后告知我们 appid。
另外,你可以试试请求我们的 todo 页面,看看日志是什么,贴上来给我们。

我把自己的servlet 删除后 todo 都是 ok 的,页面跳转正常的

那你看看你自己的 servlet 和我们附带的 todo servlet 有什么差异呢?

我都是复制粘贴,然后改路径名《

如果你无法确定原因,那能把工程代码直接放上来吗?我们可以帮你看看哪里有问题。

package com.jinju.supper.check;

import com.avos.avoscloud.*;

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;
import java.util.ArrayList;

/**
* @author hqt
*/
@WebServlet(name = "ShopServlet", urlPatterns = {"/shopList"} ,loadOnStartup = 1)
public class ShopServletIsBo extends HttpServlet {
private static final long serialVersionUID = 1L;
/***
* 查询功能
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/* String offsetParam = request.getParameter("offset");
int offset = 0;
if (!AVUtils.isBlankString(offsetParam)) {
offset = Integer.parseInt(offsetParam);
}*/
try {

        AVQuery<Shop> shopAVQuery = AVObject.getQuery(Shop.class);

// shopAVQuery.skip(offset);
request.setAttribute("shops",shopAVQuery.find());
} catch (AVException e) {
if (e.getCode() == AVException.OBJECT_NOT_FOUND) {
// 该错误的信息为:{ code: 101, message: 'Class or object doesn\'t exists.' },说明 Todo
// 数据表还未创建,所以返回空的
// Todo 列表。
// 具体的错误代码详见:https://leancloud.cn/docs/error_code.html
request.setAttribute("todos", new ArrayList<>());
} else {
throw new RuntimeException(e);
}
}
request.getRequestDispatcher("/shop.jsp").forward(request,response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        this.doGet(request,response);
}

}

package com.jinju.supper.check;

import com.alibaba.fastjson.JSON;
import com.avos.avoscloud.AVClassName;
import com.avos.avoscloud.AVObject;

import java.util.HashMap;
import java.util.Map;

@AVClassName("Shop")
public class Shop extends AVObject {
@Override
public String toString() {
Map map = new HashMap();
map.put("objectId", this.getObjectId());
map.put("createdAt", this.getCreatedAt());
return JSON.toJSONString(map);
}
}

package com.jinju.supper.check;

import com.avos.avoscloud.AVException;
import com.avos.avoscloud.AVObject;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
* @author hqt
*
*/

@WebServlet(name = "shopCheckServlet" ,urlPatterns = {"/shopCheck"} ,loadOnStartup = 1)
public class ShopCheckServlet extends HttpServlet {

/**
 * 审核功能,
 * @param request
 * @param response
 * @throws IOException
 */

protected void doGet(HttpServletResponse response, HttpServletRequest request) throws IOException {
    this.doPost(response,request);
}

protected void doPost(HttpServletResponse response, HttpServletRequest request) throws IOException {
    String isPass = request.getParameter("isPass");
    String objectId = request.getParameter("objectId");
    if(isPass ==null ||isPass ==""){
        try {
            AVObject shop= AVObject.createWithoutData("Shop",objectId);
            shop.put("isPass",1);
            shop.save();
        } catch (AVException e) {
            e.printStackTrace();

        }
    }else {
        response.sendRedirect("/shopCheck");
    }
    response.sendRedirect("/shopCheck");
}

}

package cn.leancloud.demo.todo;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.avos.avoscloud.AVCloud;
import com.avos.avoscloud.AVObject;
import com.avos.avoscloud.internal.impl.JavaRequestSignImplementation;

import cn.leancloud.LeanEngine;

@WebListener
public class AppInitListener implements ServletContextListener {

private static final Logger logger = LogManager.getLogger(AppInitListener.class);

private String appId = System.getenv("LEANCLOUD_APP_ID");
private String appKey = System.getenv("LEANCLOUD_APP_KEY");
private String appMasterKey = System.getenv("LEANCLOUD_APP_MASTER_KEY");
private String appEnv = System.getenv("LEANCLOUD_APP_ENV");
private String haveStaging = System.getenv("LEAN_CLI_HAVE_STAGING");

@Override
public void contextDestroyed(ServletContextEvent arg0) {}

@Override
public void contextInitialized(ServletContextEvent arg0) {
logger.info("LeanEngine app init.");
// 注册子类化
AVObject.registerSubclass(Todo.class);

if ("development".equals(appEnv) && "true".equals(haveStaging) || "stage".equals(appEnv)) {
  AVCloud.setProductionMode(false);
}
// 初始化AVOSCloud,请保证在整个项目中间只初始化一次
LeanEngine.initialize(appId, appKey, appMasterKey);
// 在请求签名中使用masterKey以激活云代码的最高权限
JavaRequestSignImplementation.instance().setUseMasterKey(true);
// 打开 debug 日志
// AVOSCloud.setDebugLogEnabled(true);
// 向云引擎注册云函数
LeanEngine.register(Cloud.class);

}
}
这个 监听类 也得写吗?要写的话 下面俩属性是干嘛的,

appid appkey appMasterKey 是不是从云端贴过来,

这个监听类必须写,不写的话无法正常工作。

1277745412这个是我的QQ 您能指导下吗

监听类 我也写了,
package com.jinju.supper.check;

import cn.leancloud.LeanEngine;
import com.avos.avoscloud.AVCloud;
import com.avos.avoscloud.AVOSCloud;
import com.avos.avoscloud.AVObject;
import com.avos.avoscloud.internal.impl.JavaRequestSignImplementation;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class ServletListnerIndex implements ServletContextListener {

private static final Logger logger = LogManager.getLogger(ServletListnerIndex.class);


private String appId = System.getenv("Tloasd");
private String appKey = System.getenv("fqgNs5hnasd0");
private String appMasterKey = System.getenv("k52H6HHAasd");

这3个我是从云端复制下来的
private String appEnv = System.getenv("LEANCLOUD_APP_ENV");
private String haveStaging = System.getenv("LEAN_CLI_HAVE_STAGING");

@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
        //注册 子类化
   AVObject.registerSubclass(Shop.class);
    if ("development".equals(appEnv) && "true".equals(haveStaging) || "stage".equals(appEnv)) {
        AVCloud.setProductionMode(false);
    }
    // 初始化AVOSCloud,请保证在整个项目中间只初始化一次
    LeanEngine.initialize(appId, appKey, appMasterKey);
    // 在请求签名中使用masterKey以激活云代码的最高权限
    JavaRequestSignImplementation.instance().setUseMasterKey(true);
    // 打开 debug 日志
    AVOSCloud.setDebugLogEnabled(true);
    // 向云引擎注册云函数
    LeanEngine.register(ShopCheckServlet.class);
    LeanEngine.register(ShopServletIsBo.class);
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}

}