当前位置:编程学习 > JAVA >>

这个怎么用Eclipse发布到tomcat里面去?

最近急用,网上下了个例子,文件夹下面有的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开发不是很熟悉,希望知道的朋友能帮个忙,谢谢! --------------------编程问答-------------------- 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 --------------------编程问答-------------------- 如果楼主 启动tomcat 能进入 这个例子的主页。我觉得 可能 是这个例子 本身存在问题。
--------------------编程问答-------------------- 首页是一个登陆页面,我在MYSQL数据库的登陆表查看了用户名和密码,输入用户名和密码,提示没有找到该用户,用鼠标移到“登陆”按钮上,IE左下角显示Serverlet/LoginServerlet,接下来该怎么改? --------------------编程问答-------------------- 修改 重新部署 --------------------编程问答-------------------- 因为我以前不怎么接触JAVA,怎么重新部署法? --------------------编程问答-------------------- 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 {
}

} --------------------编程问答-------------------- 在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 --------------------编程问答--------------------
引用 3 楼 funsuzhou 的回复:
首页是一个登陆页面,我在MYSQL数据库的登陆表查看了用户名和密码,输入用户名和密码,提示没有找到该用户,用鼠标移到“登陆”按钮上,IE左下角显示Serverlet/LoginServerlet,接下来该怎么改?


这里问题 分二:可能是LoginServlet实现登录业务出了问题;也可能是这个下来这个例子,在你电脑上,程序和数据库没有配置好,程序访问不到数据库 --------------------编程问答-------------------- 7楼好,非常感谢你的回答,如果用myeclipse的话,文件结构什么的都不用改,全部赋值过去吗? --------------------编程问答-------------------- 8楼好,LoginServlet我代码贴出來了,看似没有什么问题。
如果怀疑数据库没有配置好,有什么方法可以检验呢?SQL SERVER我可以直接用用户名、密码登陆,MYSQL打开也不需要密码,我也不知道程序访问数据库的时候是否成功。 --------------------编程问答--------------------
引用 9 楼 funsuzhou 的回复:
7楼好,非常感谢你的回答,如果用myeclipse的话,文件结构什么的都不用改,全部赋值过去吗?
不用改 直接加载已有的项目就行 --------------------编程问答-------------------- 我刚才试着在LoginServlet里面将
out.print("<script>location.href='../index.jsp';alert('没有找到该用户!');</script>");
改成
out.print("<script>location.href='../index.jsp';alert('没有找到!');</script>");
保存后,重新上首页,提示的依旧是"没有找到该用户!",这样算重新发布吗? --------------------编程问答-------------------- 大家指教 --------------------编程问答--------------------
引用 12 楼 funsuzhou 的回复:
我刚才试着在LoginServlet里面将
out.print("<script>location.href='../index.jsp';alert('没有找到该用户!');</script>");
改成
out.print("<script>location.href='../index.jsp';alert('没有找到!');</script>");
保存后,重新上首页,提示的依旧……


修改了servlet 要重启tomcat 重新访问 才能出来 更改后的结果 --------------------编程问答-------------------- DataLogin 这个类 贴出来看看 --------------------编程问答-------------------- --------------------编程问答-------------------- 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;
}



}

解决以后分可以再加,多谢帮忙。 --------------------编程问答-------------------- 重新发布下 ,就是点那个上面的部署按钮,里面可以选择tomcat。部署redeploy。。。 --------------------编程问答-------------------- 18楼好,我用的是Eclipse,没找到你说的部署按钮,你说的是不是myeclipse? --------------------编程问答-------------------- 楼主辛苦 Java程序调用数据库 是 通过JDBC技术
刚才从servlet 调用 开始 顺藤摸瓜 到现在的这个 DataLogin.java 中
 发现这个类 
DataBaseConn dbc = new DataBaseConn();
DataBaseConn  这个类提供了 Connection

这个类再贴一下吧 --------------------编程问答-------------------- 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();

}
}


} --------------------编程问答-------------------- 是myeclipse的 你用eclipse的装没装web插件啊 --------------------编程问答-------------------- 我要找的就是
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  这是设置了字符集
--------------------编程问答-------------------- 今天还好有两位帮忙。我现在正在下myeclipse呢,用自由门翻墙下的。 --------------------编程问答-------------------- To ThinPro:
那怎么判断//localhost:3306/student 这个数据源是否有问题呢? --------------------编程问答-------------------- 我常用的是oracle 对于mysql 不熟悉 楼主勿怪。

我在百度找方法。。 --------------------编程问答-------------------- 我也来试试SQL SERVER的JDBC连接方法。我平时都用SQL SERVER --------------------编程问答--------------------
引用 21 楼 funsuzhou 的回复:
To ThinPro:
非常感谢你的耐心。

DataBaseConn.java如下:


package org;
import java.sql.*;
public class DataBaseConn {
public Connection conn = null;

public void createConn(){
String DRIVER = "com.mys……
连接应该没问题 你再重新部署访问 看有什么为题出现。。 --------------------编程问答-------------------- 楼主 Mysql 我就现学现卖了。。

1.web项目运行是 确保 mysql 已经运行起来,不然程序是访问不到没有启动的数据库
2.通过在mysql目录下查看my.ini 看看 port 端口是不是3306
3.用dos命令下登录mysql,试试用户,密码能否正常登录
  命令是: mysql -uroot -padmin
4.输入查询所有数据库命令,看看有没有student这个数据库
  命令是: show databases;
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,