最近急用,网上下了个例子,文件夹下面有的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开发不是很熟悉,希望知道的朋友能帮个忙,谢谢!

解决方案 »

  1.   

    tomcat我用的是:apache-tomcat-6.0.35.exe
    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
      

  2.   

    如果楼主 启动tomcat 能进入 这个例子的主页。我觉得 可能 是这个例子 本身存在问题。
      

  3.   

    首页是一个登陆页面,我在MYSQL数据库的登陆表查看了用户名和密码,输入用户名和密码,提示没有找到该用户,用鼠标移到“登陆”按钮上,IE左下角显示Serverlet/LoginServerlet,接下来该怎么改?
      

  4.   

    因为我以前不怎么接触JAVA,怎么重新部署法?
      

  5.   

    LoginServerlet代码如下:package servlet;import java.io.IOException;
    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 {
    }}
      

  6.   

    在Eclipse里面Debug as -> Java Apllication,老提示:selection does not contain a main type web项目不是这样运行的,你发布后,用浏览器访问,http://localhost:8080/项目名
    File -> Export -> Web -> WAR file,提示module name is invalid
    直接项目上右键 export 导出war包。你的是eclipse吧 ?报这个 用myeclipse
    你的是web项目,装个myeclipse吧,调好后,部署后,看看能运行不。。
    最后达成war包部署到外部服务器tomcat上就ok
      

  7.   


    这里问题 分二:可能是LoginServlet实现登录业务出了问题;也可能是这个下来这个例子,在你电脑上,程序和数据库没有配置好,程序访问不到数据库
      

  8.   

    7楼好,非常感谢你的回答,如果用myeclipse的话,文件结构什么的都不用改,全部赋值过去吗?
      

  9.   

    8楼好,LoginServlet我代码贴出來了,看似没有什么问题。
    如果怀疑数据库没有配置好,有什么方法可以检验呢?SQL SERVER我可以直接用用户名、密码登陆,MYSQL打开也不需要密码,我也不知道程序访问数据库的时候是否成功。
      

  10.   

    我刚才试着在LoginServlet里面将
    out.print("<script>location.href='../index.jsp';alert('没有找到该用户!');</script>");
    改成
    out.print("<script>location.href='../index.jsp';alert('没有找到!');</script>");
    保存后,重新上首页,提示的依旧是"没有找到该用户!",这样算重新发布吗?
      

  11.   


    修改了servlet 要重启tomcat 重新访问 才能出来 更改后的结果
      

  12.   

    DataLogin 这个类 贴出来看看
      

  13.   

    ThinPro好,DataLogin.java如下:
    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;
    }



    }解决以后分可以再加,多谢帮忙。
      

  14.   

    重新发布下 ,就是点那个上面的部署按钮,里面可以选择tomcat。部署redeploy
      

  15.   

    18楼好,我用的是Eclipse,没找到你说的部署按钮,你说的是不是myeclipse?
      

  16.   

    楼主辛苦 Java程序调用数据库 是 通过JDBC技术
    刚才从servlet 调用 开始 顺藤摸瓜 到现在的这个 DataLogin.java 中
     发现这个类 
    DataBaseConn dbc = new DataBaseConn();
    DataBaseConn  这个类提供了 Connection这个类再贴一下吧
      

  17.   

    To ThinPro:
    非常感谢你的耐心。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(); }
    }
    }
      

  18.   

    是myeclipse的 你用eclipse的装没装web插件啊
      

  19.   

    我要找的就是
    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  这是设置了字符集
      

  20.   

    今天还好有两位帮忙。我现在正在下myeclipse呢,用自由门翻墙下的。
      

  21.   

    To ThinPro:
    那怎么判断//localhost:3306/student 这个数据源是否有问题呢?
      

  22.   

    我常用的是oracle 对于mysql 不熟悉 楼主勿怪。我在百度找方法。。
      

  23.   

    我也来试试SQL SERVER的JDBC连接方法。我平时都用SQL SERVER
      

  24.   

    楼主 Mysql 我就现学现卖了。。1.web项目运行是 确保 mysql 已经运行起来,不然程序是访问不到没有启动的数据库
    2.通过在mysql目录下查看my.ini 看看 port 端口是不是3306
    3.用dos命令下登录mysql,试试用户,密码能否正常登录
      命令是: mysql -uroot -padmin
    4.输入查询所有数据库命令,看看有没有student这个数据库
      命令是: show databases;