简直了,今天做了一个javaee项目,小小项目两次出错,第一个错,可以见今天早些时候的博客。顺利解决上一个问题之后,立马写完servlet相关代码,本以为,运行提交一气呵成美滋滋去睡觉,奈何每次通过所写的html中表单输入用户名以及密码,总是出错,状态码报500,网页错误显示“Servlet execution threw an exception”.其实这个项目很简单,数据库中有一个存储用户名以及密码的表,然后写一个login.html,里面有一个表单,写入用户名和密码,点击提交,服务器拿到提交的用户名和密码去数据库中查找,如果用户名和密码正确,就转发到SuccessServlet,在页面上打印一句话:登陆成功,欢迎,XXX。反之如果用户名或者密码不正确,就抓发到FailServlet,打印“登陆失败,用户名或密码不正确”。非常简单的逻辑,项目结构如下:
但是,写完之后,开启tomcat服务器,访问对应的login.html总是如下显示:
又找了一会,发现我直接把lib直接放在了web根目录下,应该在web中建立一个WEB-INF,把lib放在这里面。所以今天短短时间里遇到的两个问题,都是对java ee项目结构不清楚。这里做一个小总结:
##java动态项目的目录结构:
java动态项目的目录结构:
+ 项目根目录(web文件夹)
+ WEB-INF目录
+ web.xml:web目录的核心配置文件(但是我的项目中没有勾选,所以没有此项)
+ classes目录:放置字节码文件的目录
+ lib目录:放置依赖的jar包
另外,项目根目录同级的src放具体的代码.而且需要注意的是,工作空间项目和tomcat部署的web项目之间的区别.tomcat真正访问的是"tomcat部署的web项目","tomcat部署的web项目"对应着工作空间项目的web目录下的所有资源.再者,WEB-INF目录下的资源不能被浏览器直接访问.所以,要解决我的问题,就是在web根目录下建立一个WEB-INF目录,将lib文件夹放进去就可以了.