package lee;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;import java.io.*;@WebServlet(name="login",urlPatterns={"/login"})
public class LoginServlet extends HttpServlet
{
//响应客户端的请求
public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
String errMsg = "";
//Servlet并不会把响应送到客户端因而必须把请求转发
RequestDispatcher rd;
//获得请求的参数
String username = request.getParameter("username");
String pass = request.getParameter("pass");
DbDao  dd = null;
try{
dd = new DbDao("com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/test","root","1234");
//查询结果集
ResultSet rs = dd.query("select t_password from t_user where t_loginname=?",username);
if(rs.next()){
//用户名和密码匹配
if(rs.getString("t_password").equals(pass)){
//获取session对象
HttpSession session = request.getSession(true);
session.setAttribute("name",rs.getString("t_name"));
//获得转发对象
rd = request.getRequestDispatcher("/welcome.jsp");
//转发请求
rd.forward(request,response);
}else{
errMsg += "输入的用户名密码不符合,请重新输入";
}
}else{
//用户不存在
errMsg += "用户名不存在,请先注册";
}
}catch(Exception e){
e.printStackTrace();
}
//如果出错转发到得新登录
if(errMsg !=null && !errMsg.equals("")){
rd = request.getRequestDispatcher("/login.jsp");
request.setAttribute("err",errMsg);
rd.forward(request,response);
}
}
}
下面还有一个类它在另一个文件中:
package lee;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;import java.io.*;
public class DbDao
{
private Connection conn;
private String driver;
private String url;
private String username;
private String pass;
public DbDao(){}
public DbDao(String driver,String url,String username,String pass){
this.driver = driver;
this.url = url;
this.username = username;
this.pass = pass;
}
//下面各个成员属性的setter/getter
public void setDriver(String driver){
this.driver = driver;
}
public String getDriver(){
return this.driver;
}
public void setUrl(String url)
{
this.url = url;
}
public String getUrl(){
return this.url;
}
public void setUsername(String username){
this.username = username;
}
public String getUsername(){
return this.username;
}
public void  setPass(String pass){
this.pass = pass;
}
public String getPass(){
return this.pass;
} //连接数据库
public Connection getConnection() throws Exception{
if(conn == null){
Class.forName(this.driver);
conn = DriverManager.getConnection(url,username,pass);
}
return conn;
}
//插入记录
public boolean insert(String sql,Object ... args) throws Exception{
PreparedStatement pstmt = getConnection().prepareStatement(sql);
for(int i=0;i<args.length;i++){
pstmt.setObject(i+1,args[i]);
}
if(pstmt.executeUpdate()!=1){
return false;
}
return true;
}
//执行查询
public ResultSet query(String sql,Object ... args) throws Exception{
PreparedStatement pstmt = getConnection().prepareStatement(sql);
for(int i=0;i<args.length;i++){
pstmt.setObject(i+1,args[i]);
}
return pstmt.executeQuery();
}
//修改
public void modify(String sql,Object ... args) throws Exception{
PreparedStatement pstmt = getConnection().prepareStatement(sql);
for(int i=0;i<args.length;i++){
pstmt.setObject(i+1,args[i]);
}
pstmt.executeUpdate();
pstmt.close();
}
//关闭数据库和连接
public void closeConn() throws Exception{
if(conn != null && !conn.isClosed()){
conn.close();
}
}
}
编译DbDao没有问题,但在编译上成的LoginServlet的时候提示找不到符号(DbDao)

解决方案 »

  1.   

     看看是不是classPath 配置出问题了?
      

  2.   

    你的代码不全,我copy到eclipse的时候有问题,不过,找不到符号的话,你试试看看 你 的那个类有没有被编译,或者你看看你的 classpath的问题看看。
      

  3.   

    你是用eclipse还是用的txt写的?
    eclipse应该没问题,如果是用txt写的话我估计你java运行命令打错了。、