会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132370个问题
JAVA 全系列/(旧的隐藏)第八阶段:电商高级项目_架构/编码/电商ego-使用VSFTPD_Nginx完成商品新增 37336楼
JAVA 全系列/(旧的隐藏)第八阶段:电商高级项目_架构/编码/电商ego-基于SOA架构_Dubbo使用_逆向工程_分页插件完成商品查询 37340楼
JAVA 全系列/(旧的隐藏)第八阶段:电商高级项目_架构/编码/电商ego-基于SOA架构_Dubbo使用_逆向工程_分页插件完成商品查询 37341楼

一、

    1、项目要求描述:

    登录用户时,通过session对象保存用户信息到Redis数据库,登录成功后获取session对象提示给用户

    2、存在BUG描述(不知道怎么用文字描述还是截图吧):

    a、网页操作

blob.png

blob.png

    b、pycharm后台报错如下

blob.png

    c、Redis数据库有保存的信息。

blob.png

二、自己调试过程:

    1、怀疑是登录时,创建的session对象,没有保存用户信息就保存在了Redis数据库(验证步骤如下,步骤应该是说明了session对象没有保存用户信息,因为输出时None,但是如何改正自己不会还请老师指导)

blob.png

    2、怀疑获取session对象时没有获取到(验证步骤如下,步骤应该是说明了没有获取到session对象,因为输出时None。但是如何改正自己不会还请老师指导)

blob.png

    3.通过上面的猜测,觉得BUG存在的原因是,第一:MainHandler类中设置修改session对象时没有调用到session对象,所以没有保存用户信息。第二:LoginHandler类中,没有获取到session对象所以不能返回给HTML页面。(下面是视图类代码如下)

#coding=utf-8
from tornado.web import RequestHandler
from utils.session import SessionManager, Session

class BaseHandler(RequestHandler):
    def prepare(self):
        #从cookie中获取sessionid
        c_sessionid = self.get_cookie('sessionid','')
        print c_sessionid
        #根据sessionid获取session对象
        sessionobj = SessionManager.getsessionobj(c_sessionid)
        print sessionobj.sessionid
        if sessionobj.sessionid != c_sessionid:
            self.set_cookie('sessionid',sessionobj.sessionid,expires_days=14)
            print self.get_cookie('sessionid')
        self.session = sessionobj
    def on_finish(self):
        SessionManager.cache2redis(self.session)

class MainHandler(BaseHandler):
    def initialize(self,conn):
        self.conn = conn
    def get(self, *args, **kwargs):
        self.render('login.html')
    def post(self, *args, **kwargs):
        #获取用户登录参数
        uname = self.get_argument('uname')
        pwd = self.get_argument('pwd')
        #获取游标对象
        cursor = self.conn.cursor()
        #执行SQL语句
        cursor.execute('select * from db_test1 where user_name="%s" and user_pwd="%s"'%(uname,pwd))
        #执行结果
        user = cursor.fetchone()
        #将登录用户对象保存在session对象中
        self.session.set('user',user)
        # 判断是否登录成功
        if user:
            self.redirect('/login/')
            # self.write(u'用户%s登录成功'%uname)
        else:
            self.write(u'用户不存在,或密码输入不正确')

class RegisterHandler(BaseHandler):
    def initialize(self,conn):
        self.conn = conn
    def get(self, *args, **kwargs):
        self.render('register.html')
    def post(self, *args, **kwargs):
        #获取请求参数
        uname = self.get_argument('name')
        pwd = self.get_argument('pwd')
        #实现在数据库插入数据
        try:
            cursor = self.conn.cursor()
            cursor.execute('insert into db_test1 values(null,"%s","%s",now())'%(uname,pwd))
            self.conn.commit()
            self.write('注册成功!')
        except Exception as e:
            self.conn.rollback()
            self.write('注册失败!')

class LoginHandler(BaseHandler):
    def get(self, *args, **kwargs):
        #从session中获取当前登录用户对象
        user = self.session.get('user')
        # print user
        self.write(u'欢迎%s登录成功!'%user.uname)


三、项目压缩文件如下(python2.7解释器):

test_register_login.zip







Python 全系列/第十三阶段:高并发性能怪兽-Tornado 框架/Tornado 深入学习(旧) 37344楼
Python 全系列/第九阶段:Python_Django2 框架(隐藏)/Django模型层 37345楼

[INFO] Scanning for projects...

[INFO] 

[INFO] --------------------< com.bjsxt.provider:order-sys >--------------------

[INFO] Building order-sys 0.0.1-SNAPSHOT

[INFO] --------------------------------[ war ]---------------------------------

[INFO] 

[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ order-sys ---

[INFO] Deleting C:\Users\Administrator\eclipse-workspace\red-sys\target

[INFO] 

[INFO] >>> tomcat7-maven-plugin:2.2:run (default-cli) > process-classes @ order-sys >>>

[INFO] 

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ order-sys ---

[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!

[INFO] Copying 1 resource

[INFO] 

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ order-sys ---

[INFO] Changes detected - recompiling the module!

[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!

[INFO] Compiling 2 source files to C:\Users\Administrator\eclipse-workspace\red-sys\target\classes

[INFO] 

[INFO] <<< tomcat7-maven-plugin:2.2:run (default-cli) < process-classes @ order-sys <<<

[INFO] 

[INFO] 

[INFO] --- tomcat7-maven-plugin:2.2:run (default-cli) @ order-sys ---

[INFO] Running war on http://localhost:8080/red

[INFO] Creating Tomcat server configuration at C:\Users\Administrator\eclipse-workspace\red-sys\target\tomcat

[INFO] create webapp with contextPath: /red

六月 06, 2019 10:40:35 上午 org.apache.coyote.AbstractProtocol init

信息: Initializing ProtocolHandler ["http-bio-8080"]

六月 06, 2019 10:40:35 上午 org.apache.catalina.core.StandardService startInternal

信息: Starting service Tomcat

六月 06, 2019 10:40:35 上午 org.apache.catalina.core.StandardEngine startInternal

信息: Starting Servlet Engine: Apache Tomcat/7.0.47

六月 06, 2019 10:40:40 上午 org.apache.catalina.core.ContainerBase startInternal

严重: A child container failed during start

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/red]]

at java.util.concurrent.FutureTask.report(FutureTask.java:122)

at java.util.concurrent.FutureTask.get(FutureTask.java:192)

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)

at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/red]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

... 6 more

Caused by: java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name red

at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3241)

at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3220)

at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1367)

at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1346)

at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)

at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

... 6 more


六月 06, 2019 10:40:40 上午 org.apache.catalina.core.ContainerBase startInternal

严重: A child container failed during start

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]

at java.util.concurrent.FutureTask.report(FutureTask.java:122)

at java.util.concurrent.FutureTask.get(FutureTask.java:192)

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)

at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.startup.Tomcat.start(Tomcat.java:341)

at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.startContainer(AbstractRunMojo.java:1238)

at org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.execute(AbstractRunMojo.java:592)

at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)

at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)

at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)

at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)

at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)

at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)

at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)

at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)

at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956)

at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:290)

at org.apache.maven.cli.MavenCli.main(MavenCli.java:194)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)

at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)

at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)

at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:748)

Caused by: org.apache.catalina.LifecycleException: A child container failed during start

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)

at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

... 6 more


[INFO] ------------------------------------------------------------------------

[INFO] BUILD FAILURE

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 9.383 s

[INFO] Finished at: 2019-06-06T10:40:40+08:00

[INFO] ------------------------------------------------------------------------

[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run (default-cli) on project order-sys: Could not start Tomcat: Failed to start component [StandardServer[-1]]: Failed to start component [StandardService[Tomcat]]: Failed to start component [StandardEngine[Tomcat]]: A child container failed during start -> [Help 1]

[ERROR] 

[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR] 

[ERROR] For more information about the errors and possible solutions, please read the following articles:

[ERROR] [Help 1]

http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException


启动第二个项目tomcat启动报错


JAVA 全系列/(旧的隐藏)第八阶段:电商高级项目_架构/编码/电商ego-技术储备_RPC调用_服务注册与发现 37346楼
JAVA 全系列/第三阶段:数据库编程/SQL 语言 37349楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 37350楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637