package com.lyq;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class RegServlet extends HttpServlet {

    private static final long serialVersionUID = 1789481329876401944L;
    
    //数据库连接Connection
    private Connection conn;
    
public void init() throws ServletException {
super.init();
try
{
//加载驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//数据库连接
String url = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=Save";
//获取数据库连接
conn = DriverManager.getConnection(url,"sa","123");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}

//doPost 方法处理注册请求
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
//获取表单中属性值
String username = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
String question = request.getParameter("question");
String answer = request.getParameter("answer");
String email = request.getParameter("email");
//判断数据库是否连接成功
if(conn!=null)
{
try
{
// 插入注册信息的SQL语句(使用?占位符)
String sqlstr="insert into client (name,pwd,sex,question,answer,email)"
+ "values(?,?,?,?,?,?)";
//创建PreParedStatement对象
PreparedStatement ps=conn.prepareStatement(sqlstr);
// 对SQL语句中的参数动态赋值
ps.setString(1,username);
ps.setString(2,password);
ps.setString(3,sex);
ps.setString(4,question);
ps.setString(5,answer);
ps.setString(6,email);
// 执行更新操作
ps.executeUpdate();
// 获取PrintWriter对象
PrintWriter out = response.getWriter();
// 输出注册结果信息
out.print("<h1 align='center'>");
out.print(username+"注册成功!");
out.print("</h1>");
out.flush();
out.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
else
{
// 发送数据库连接错误提示信息
response.sendError(500,"数据库连接错误!");
}
}
}

解决方案 »

  1.   

    把myeclipse中console红色部分贴出来
      

  2.   

    这错误很长,在tomcat中怎么把那错误信息粘在这上面
      

  3.   

      ilterChain.java:188)
            at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilte
    r.java:39)
            at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(Sit
    emeshExcludePathFilter.java:38)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilt
    er.java:119)
            at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilte
    r.java:55)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.ja
    va:204)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.seraph.filter.TrustedApplicationsFilter.doFilter(Truste
    dApplicationsFilter.java:120)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.
    java:138)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(Profili
    ngFilter.java:132)
            at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfi
    lingFilter.java:16)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(Acti
    onCleanupDelayFilter.java:47)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestC
    leanupFilter.java:50)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(Abstract
    JohnsonFilter.java:72)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewrit
    eFilter.java:350)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:
    75)
            at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:51)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEn
    codingFilter.java:33)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at com.atlassian.jira.appconsistency.db.DatabaseCompatibilityEnforcerFil
    ter.doFilter(DatabaseCompatibilityEnforcerFilter.java:39)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:215)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:188)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
    alve.java:213)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
    alve.java:174)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
    ava:127)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
    ava:117)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
    ve.java:108)
            at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
    548)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
    a:174)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
    :874)
            at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
    rocessConnection(Http11BaseProtocol.java:665)
            at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
    int.java:528)
            at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
    lowerWorkerThread.java:81)
            at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
    ool.java:689)
            at java.lang.Thread.run(Thread.java:619)
    2010-08-04 10:34:44,656 http-8080-Processor23 ERROR [500ErrorPage.jsp] Exception
     caught in 500 page Unable to compile class for JSP:
    An error occurred at line: 6 in the generated java file
    Only a type can be imported. com.eip.worklog resolves to a packageAn error occurred at line: 4 in the jsp file: /secure/views/worklogsheet/savelog
    .jsp
    The method savelog(HttpServletRequest) is undefined for the type WebWorklogPlugi
    n
    1: <%@ page import="com.eip.worklog"%>
    2: <jsp:useBean id="work" scope="session" class="com.eip.worklog.WebWorklogPlugi
    n"/>
    3: <%
    4: work.savelog(request);
    5: %>
    6: <jsp:forward page="test.jsp" />
    Stacktrace:
    org.apache.jasper.JasperException: Unable to compile class for JSP:
    An error occurred at line: 6 in the generated java file
    Only a type can be imported. com.eip.worklog resolves to a packageAn error occurred at line: 4 in the jsp file: /secure/views/worklogsheet/savelog
    .jsp
    The method savelog(HttpServletRequest) is undefined for the type WebWorklogPlugi
    n
    1: <%@ page import="com.eip.worklog"%>
    2: <jsp:useBean id="work" scope="session" class="com.eip.worklog.WebWorklogPlugi
    n"/>
    3: <%
    4: work.savelog(request);
    5: %>
    6: <jsp:forward page="test.jsp" />
      

  4.   

    在项目的lib下装一个classes12.jar文件(SQL驱动),应该就可以了。
      

  5.   

    1.在项目里导入 sql jdbc那三个jar包,然后build path。
    2.如果还不行, <%@ page import="com.eip.worklog"%>改成 <%@ language="java" page import="com.eip.worklog"%>
      

  6.   

    15楼你疯了吧,你那是Oracle的驱动包
      

  7.   

    要把相应的数据库驱动放在tomcat安装目录中的lib下面(可能版本不一样,对应目录不一样),或者将驱动放在网站目录上的web-inf下的lib目录中
      

  8.   


    package base;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.List;public class BaseDao {
    public static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    public static final String URL = "jdbc:microsoft:sqlserver://127.0.0.1:1042;databasename=maydos";
    public static final String USER = "sa";
    public static final String PASS = "ok";

    private Statement stm;
    private Connection conn;
    private PreparedStatement pstm;
    private ResultSet rs;

    /**
     * 连接数据库
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public void open() throws ClassNotFoundException, SQLException {
    Class.forName(DRIVER);
    this.conn = DriverManager.getConnection(URL, USER, PASS);
    }

    /**
     * 关闭数据库连接
     */
    public void close() {
    if (null != this.rs) {
    try {
    this.rs.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    if (null != this.stm) {
    try {
    this.stm.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    if (null != this.pstm) {
    try {
    this.pstm.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    if (null != this.conn) {
    try {
    this.conn.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    /**
     * 用PreparedStatement来执行查询语句
     * @param sql
     * @param par
     * @return
     * @throws SQLException
     */
    public ResultSet findSQL(String sql, List par) throws SQLException {
    this.pstm = this.conn.prepareStatement(sql);
    if (null != par) {
    for (int i = 0; i < par.size(); i++) {
    this.pstm.setString(i + 1, par.get(i).toString());
    }
    }
    this.rs = this.pstm.executeQuery();
    return this.rs;
    }

    /**
     * 用PreparedStatement来执行增删改语句
     * @param sql
     * @param par
     * @return
     * @throws SQLException
     */
    public int executeSQL(String sql, List par) throws SQLException {
    this.pstm = this.conn.prepareStatement(sql);
    if (null != par) {
    for (int i = 0; i < par.size(); i++) {
    this.pstm.setString(i + 1, par.get(i).toString());
    }
    }
    return this.pstm.executeUpdate();
    }
    }