最近急用,网上下了个例子,文件夹下面有的css,images,js,META-INF,src,WEB-INF文件夹,还有一些jsp文件。
在Eclipse里面Debug as -> Java Apllication,老提示:selection does not contain a main type
File -> Export -> Web -> WAR file,提示module name is invalid
这个究竟该怎么发布呢?注:利用现有的目录结构,在tomcat里面建虚拟目录,可以在IE上看到入口页面,但我想对某些地方进行修改后重新发布,该怎么做好呢?因以前主要用VS开发,对JAVA开发不是很熟悉,希望知道的朋友能帮个忙,谢谢!
在Eclipse里面Debug as -> Java Apllication,老提示:selection does not contain a main type
File -> Export -> Web -> WAR file,提示module name is invalid
这个究竟该怎么发布呢?注:利用现有的目录结构,在tomcat里面建虚拟目录,可以在IE上看到入口页面,但我想对某些地方进行修改后重新发布,该怎么做好呢?因以前主要用VS开发,对JAVA开发不是很熟悉,希望知道的朋友能帮个忙,谢谢!
Eclipse用的是:eclipse-jee-indigo-SR1-win32
JDK用的是:jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe
MYSQL用的是:mysql-installer-5.5.19.0.msi
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import dao.DataLogin;public class LoginServlet extends HttpServlet { //public static void main(String args[]) {
//LoginServlet p = new LoginServlet ();
//}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy();
} /**
* The doGet method of the servlet. <br>
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String password = request.getParameter("password");
String kind = request.getParameter("kind");
int role = 3;
if(kind.equals("student")){
role = 3;
}
if(kind.equals("teacher")){
role = 2;
}
if(kind.equals("admin")){
role = 1;
}
HttpSession session = request.getSession();
//session.setAttribute("role",role);
DataLogin dl = new DataLogin();
boolean flag = dl.loginJudge(name,password,role);
if(flag){
session.setAttribute("loginname", name);
session.setAttribute("role",kind);
if(kind.equals("student")){
out.print("<script>location.href='../student.jsp'</script>");
}
if(kind.equals("teacher")){
out.print("<script>location.href='../teacher.jsp'</script>");
}
if(kind.equals("admin")){
out.print("<script>location.href='../admin.jsp'</script>");
}
}else{
out.print("<script>location.href='../index.jsp';alert('没有找到该用户!');</script>");
}
out.flush();
out.close();
} /**
* The doPost method of the servlet. <br>
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
} /**
* Initialization of the servlet. <br>
*/
public void init() throws ServletException {
}}
File -> Export -> Web -> WAR file,提示module name is invalid
直接项目上右键 export 导出war包。你的是eclipse吧 ?报这个 用myeclipse
你的是web项目,装个myeclipse吧,调好后,部署后,看看能运行不。。
最后达成war包部署到外部服务器tomcat上就ok
这里问题 分二:可能是LoginServlet实现登录业务出了问题;也可能是这个下来这个例子,在你电脑上,程序和数据库没有配置好,程序访问不到数据库
如果怀疑数据库没有配置好,有什么方法可以检验呢?SQL SERVER我可以直接用用户名、密码登陆,MYSQL打开也不需要密码,我也不知道程序访问数据库的时候是否成功。
out.print("<script>location.href='../index.jsp';alert('没有找到该用户!');</script>");
改成
out.print("<script>location.href='../index.jsp';alert('没有找到!');</script>");
保存后,重新上首页,提示的依旧是"没有找到该用户!",这样算重新发布吗?
修改了servlet 要重启tomcat 重新访问 才能出来 更改后的结果
package dao;import java.sql.PreparedStatement;
import java.sql.ResultSet;import org.DataBaseConn;import bean.Login;public class DataLogin { DataBaseConn dbc = new DataBaseConn();
//根据用户名检查用户是否存在
public boolean stuJudge(String loginName){
boolean flag = true;
String sql = "select * from stu_login where loginName = ?";
PreparedStatement psmt = null;
try {
psmt = dbc.getConn().prepareStatement(sql);
psmt.setString(1,loginName);
ResultSet rs = psmt.executeQuery();
if(rs.next() && rs != null){
flag = true;
}else{
flag = false;
}
psmt.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
dbc.closeConn();
}
return flag;
}
//检查登录用户名和密码是否正确
public boolean loginJudge(String loginName,String loginPWD,int role ){
boolean flag = false;
String sql = "select * from stu_login where roleID =? and loginName=? and loginPWD=? ";
PreparedStatement psmt = null;
try {
psmt = dbc.getConn().prepareStatement(sql);
psmt.setInt(1,role);
psmt.setString(2,loginName);
psmt.setString(3,loginPWD );
ResultSet rs = psmt.executeQuery();
if(rs.next() && rs != null){
flag = true;
}
psmt.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
dbc.closeConn();
}
return flag;
}
//修改密码
public boolean updateLogin(String loginName,String loginpwd){
boolean flag = false;
Login login = null;
String sql = "update stu_login set loginPWD = ? where loginName = ?";
PreparedStatement psmt = null;
try {
psmt = dbc.getConn().prepareStatement(sql);
psmt.setString(1,loginpwd);
psmt.setString(2, loginName);
psmt.executeUpdate();
flag = true;
psmt.close();
} catch (Exception e) {
flag = false;
System.out.println("DataLogin更新密码updateLogin操作失败!");
e.printStackTrace();
}finally{
dbc.closeConn();
}
return flag;
}
//添加记录
public boolean addPerson(int role,String lname){
boolean flag = false;
String sql = "insert into stu_login values(null,?,?,'123456')";
PreparedStatement psmt = null;
try {
psmt = dbc.getConn().prepareStatement(sql);
psmt.setInt(1,role);
psmt.setString(2,lname);
psmt.executeUpdate();
flag = true;
psmt.close();
} catch (Exception e) {
flag = false;
System.out.println("DataLogin添加登录信息记录操作失败!");
e.printStackTrace();
}finally{
dbc.closeConn();
}
return flag;
}
}解决以后分可以再加,多谢帮忙。
刚才从servlet 调用 开始 顺藤摸瓜 到现在的这个 DataLogin.java 中
发现这个类
DataBaseConn dbc = new DataBaseConn();
DataBaseConn 这个类提供了 Connection这个类再贴一下吧
非常感谢你的耐心。DataBaseConn.java如下:
package org;
import java.sql.*;
public class DataBaseConn {
public Connection conn = null;
public void createConn(){
String DRIVER = "com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/student?user=root&password=admin&useUnicode=true&characterEncoding=gb2312";
if(conn == null){
try{
Class.forName(DRIVER).newInstance();
conn = DriverManager.getConnection(url);
}catch(Exception e){
e.printStackTrace();
}
}
}
public Connection getConn(){
if(conn == null){
createConn();
}
return conn;
}
public void closeConn(){
if(conn != null){
try {
conn .close();
conn = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
public ResultSet executeQuery(String sql) {
ResultSet rs = null;
if (conn == null) {
createConn();
}
try {
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (Exception e) {
e.printStackTrace(); }
return rs;
} public void executeUpdate(String sql) {
if (conn == null) {
createConn();
}
try {
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace(); }
}
}
String url="jdbc:mysql://localhost:3306/student?user=root&password=admin&useUnicode=true&characterEncoding=gb2312";表示了 连接数据库 配置其中
jdbc:mysql: 这是协议
//localhost:3306/student 这是数据源 是我对于你web运行找不到用户密码的怀疑,在你电脑里是不是在这个位置能找到 这个数据源
user=root&password=admin 这是 用户名和密码
&useUnicode=true&characterEncoding=gb2312 这是设置了字符集
那怎么判断//localhost:3306/student 这个数据源是否有问题呢?
2.通过在mysql目录下查看my.ini 看看 port 端口是不是3306
3.用dos命令下登录mysql,试试用户,密码能否正常登录
命令是: mysql -uroot -padmin
4.输入查询所有数据库命令,看看有没有student这个数据库
命令是: show databases;