cx521007 发表于 2007-12-6 02:07

关于servlet的问题

掉弟最近刚开始学servlet想问问这么写那里不对

package com.cn.login;
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 java.sql.*;
public class login extends HttpServlet {
    private String forname;
    private String url;
    private String user;
    private String pwd;
/**
  * Constructor of the object.
  */
public login() {
  super();
}
/**
  * Destruction of the servlet. <br>
  */
public void destroy() {
  super.destroy(); // Just puts "destroy" string in log
  // Put your code here
}
/**
  * The doGet method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to get.
  *
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  try{
   Class.forName(forname);
   Connection conn=DriverManager.getConnection(url,user,pwd);
   Statement st=conn.createStatement();
   String sql="SELECT COUNT(*) FROM luntan";
   ResultSet rt=st.executeQuery(sql);
   if(rt.next()){
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
          out.println("<HTML>");
          out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
          out.println("  <BODY>");
          out.print("Welcome:"+request.getParameter("username"));
          out.println("  </BODY>");
          out.println("</HTML>");
          out.flush();
          out.close();
   }else{
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
          out.println("<HTML>");
          out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
          out.println("  <BODY>");
          out.print("用户名或密码错误,请重新输入");
          out.println("  </BODY>");
          out.println("</HTML>");
          out.flush();
          out.close();
   }
  }catch(Exception e){
   e.printStackTrace();
  }
}
/**
  * The doPost method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to post.
  *
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
        doGet(request,response);
}
/**
  * Initialization of the servlet. <br>
  *
  * @throws ServletException if an error occure
  */
public void init() throws ServletException {
  forname=getInitParameter("forname");
  url=getInitParameter("url");
  user=getInitParameter("user");
  pwd=getInitParameter("pwd");
}
}

cx521007 发表于 2007-12-6 02:07

这里是XML配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <servlet>
    <servlet-name>login</servlet-name>
    <display-name>This is the display name of my J2EE component</display-name>
    <description>This is the description of my J2EE component</description>
    <servlet-class>com.cn.login.login</servlet-class>
  </servlet>
  <init-param>
                <param-name>forname</param-name>
                <param-value>com.microsoft.jdbc.sqlserver.SQLServerDriver</param-value>
     </init-param>
        <init-param>
                <param-name>url</param-name>
                <param-value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=luntan</param-value>
    </init-param>
        <init-param>
                <param-name>user</param-name>
                <param-value>sa</param-value>
    </init-param>
    <init-param>
                <param-name>pwd</param-name>
                <param-value>sa</param-value>
    </init-param>
  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/servlet/login</url-pattern>
  </servlet-mapping>

</web-app>

doughty 发表于 2007-12-6 08:33

有报异常没...有就贴出来看看

scdmike 发表于 2007-12-6 10:10

我试过这段代码应该没有问题,那你到底是什么问题呢?

cx521007 发表于 2007-12-7 12:19

从控制台上看到的错误,
java.lang.NullPointerException
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at com.cn.login.login.doGet(login.java:43)
        at com.cn.login.login.doPost(login.java:85)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
        at java.lang.Thread.run(Unknown Source)

scdmike 发表于 2007-12-7 14:38

login.java:43是哪一行啊?我确定程序代码没有问题,你应该看看数据库有没有问题。也就是连接数据库,还有就是连接数据库的包导入了没有?

cx521007 发表于 2007-12-7 17:23

数据库我测试过没有错啊我用别的程序测试过一切都是正常显示
可用到这个servlet中就出现了错误进入到servlet生成的页面的时候什么都不显示也没报错在eclipse的控制台里边就显示上边哪个错误

风月_无边 发表于 2007-12-7 17:43

應該是連接數據庫出了問題﹗﹗

喃瑟 发表于 2007-12-28 09:31

没有数据,看看你的数据库表对不对[em01]

zhouyanghao 发表于 2007-12-28 10:55

应该改成字符输出!!
response.setContentType("text/html");
改成
rq.setCharacterEncoding("GB2312");
rp.setContentType("text/html; charset=gb2312");

非凡DZ 发表于 2007-12-29 15:38

Class.forName(forname);
   Connection conn=DriverManager.getConnection(url,user,pwd);
这两行代码中用到的变量你根本没有赋值啊

页: [1]

编程论坛