由一个Servlet 看java入门常犯的几个错误

安装完java环境后,cmd-javac 报错           -------------》环境变量配错了,最后全配成系统变量,ok了

能浪费一天的时间

写一个最简单的Servlet ,tomcat报错404

看到一个

信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Program Files\jdk\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:\Program Files\jdk\jre\bin;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Pro

以为是它的原因,其实都不重要

重要是没找到index.jsp        -----------------------》文件位置、目录错了

能浪费一天的时间

Servlet 读取远程orcale,报错   -----------------------------》java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

jdk和驱动是匹配的,查过了

变量也加了

其实是webcontent\web-inf\lib里没有放jar包

能浪费一天的时间

java连接orcale需要安装客户端吗?----------------------------》不需要,事实上有一个驱动就ok了,驱动就是一个小客户端了

能浪费一天的时间

import javax.servlet.*;报错---------------》原因,没有build Servlet-api.jar

大纲目录

xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>fleam</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <!-- 通过getServletContext().getInitParameter("XX")读取 -->
<context-param>
   <param-name>driver</param-name>
   <param-value>oracle.jdbc.driver.OracleDriver</param-value>
</context-param>

<context-param>
   <param-name>url</param-name>
   <param-value>jdbc:oracle:thin:@XXXXXXXXXXXXXXXXX:1521:XXX</param-value>
</context-param>

<context-param>
   <param-name>username</param-name>
   <param-value>XXX</param-value>
</context-param>

<context-param>
   <param-name>password</param-name>
   <param-value>XXXXX</param-value>
</context-param>

</web-app>

程序

package helloworld;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 */
@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private String diverClass;
    private String userName;
    private String password;
    private String url;

    /**
     * Default constructor.
     */
    public HelloWorld() {
        // TODO Auto-generated constructor stub

    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    @Override

    protected void doGet(HttpServletRequest request,

            HttpServletResponse response) throws ServletException, IOException {

        Connection conn = null;

        Statement stmt = null;

        ResultSet rs = null;

        JSONObject jsonObject = new JSONObject();

        response.setContentType("text/html");

        response.setCharacterEncoding("gb2312");

        PrintWriter out = response.getWriter();

        diverClass = /* getServletConfig(). */getServletContext().getInitParameter("driver");
           userName = /* getServletConfig(). */getServletContext().getInitParameter("username");
           password = /* getServletConfig(). */getServletContext().getInitParameter("password");
           url = /* getServletConfig(). */getServletContext().getInitParameter("url");

        try {

            Class.forName(diverClass);

            //conn = DriverManager.getConnection("jdbc:mysql://localhost/bbs?user=root&password=12345678");

            conn = DriverManager.getConnection(url, userName,password);

            stmt = conn.createStatement();

            rs = stmt.executeQuery("SELECT * FROM ANIMALS"); 

            while(rs.next()){

                try {

                     jsonObject.put("name",rs.getString("NAME"));
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //out.println(rs.getString("NAME"));
                out.println(jsonObject);

            }

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

        } catch (SQLException e) {

            e.printStackTrace();

        } finally {

            try {

                if(rs != null) {

                    rs.close();

                    rs = null;

                }

                if(stmt != null) {

                    stmt.close();

                    stmt= null;

                }

                if(conn != null) {

                    conn.close();

                    conn = null;

                }

            } catch (SQLException e) {

                e.printStackTrace();

            }

        }

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

         PrintWriter out = response.getWriter();
         out.println("<div style=‘width:100px;height:100px;background-color:red‘>123123</div>");

    }

}
时间: 2024-10-07 05:25:38

由一个Servlet 看java入门常犯的几个错误的相关文章

Java程序员常犯的10个错误

本文总结了Java程序员常犯的10个错误. #1. 把Array转化成ArrayList 把Array转化成ArrayList,程序员经常用以下方法: List<String> list = Arrays.asList(arr); Arrays.asList() 实际上返回一个ArrayList,但是这个ArrayList是Arrays的一个内部私有类,而不是java.util.ArrayList类.这个私有类java.util.Arrays.ArrayList有set(), get(), c

[转]Java程序员们最常犯的10个错误

1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList对象,ArrayList类是Arrays的一个私有静态类,而不是java.util.ArrayList类,java.util.Arrays.ArrayList类有set().get().contains()方法,但是没有增加元素的方法,所以它的大小是固定的,想要创建一个真正的ArrayLis

Java程序员们最常犯的10个错误

1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList对象,ArrayList类是Arrays的一个私有静态类,而不是java.util.ArrayList类,java.util.Arrays.ArrayList类有set().get().contains()方法,但是没有增加元素的方法,所以它的大小是固定的,想要创建一个真正的ArrayList类,你应该这样做

Java开发者常犯的十个错误

翻译自:Top 10 Mistakes Java Developers Make 文章列出了Java开发者最常犯的是个错误. 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList,但这个ArrayList是Arrays的私有静态类,不是java.util.ArrayList.java.util.Arrays.Arra

python新手常犯的17个错误

1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 "SyntaxError :invalid syntax") 该错误将发生在类似如下代码中: 1 2 if spam== 42 print('Hello!') 2) 使用 = 而不是 ==(导致"SyntaxError: invalid syntax") = 是赋值操作符而 == 是等于比较操作.该错误发生在如下代码中: 1 2 if spam

Spring常犯的十大错误,你踩过吗?

1.错误一:太过关注底层 我们正在解决这个常见错误,是因为 "非我所创" 综合症在软件开发领域很是常见.症状包括经常重写一些常见的代码,很多开发人员都有这种症状. 虽然理解特定库的内部结构及其实现,在很大程度上是好的并且很有必要的(也可以是一个很好的学习过程),但作为软件工程师,不断地处理相同的底层实现细节对个人的开发生涯是有害的. 像 Spring 这种抽象框架的存在是有原因的,它将你从重复地手工劳作中解放出来,并允许你专注于更高层次的细节 -- 领域对象和业务逻辑. 因此,接受抽象

《职业经理人常犯的11个错误》——余世维

相比<赢在执行力>,余博士<职业经理人常犯的11个错误>所谈到的问题更为尖锐,每个问题都一针见血地挑出作为一个处于工作中的人(不仅仅是职业经理)习惯性所容易犯的错误. 第一个错误:拒绝承担责任.“圣人千虑,必有一失”,每个人在日常工作中难免会有犯错误的时候,有效的管理者.有效的员工应该果断为事情的结果承担责任.余博士指出:与其不停地辩解,还不如努力地表现.一句“对不起,这是我的错”.“对不起,我失察了”.“对不起,我刚才犯了个错误”能让事情马上有了结果,直接进入解决错误的局面.因此

Web开发人员常犯的10个错误

说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML.CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框架.在将任务分解为这几步之后,接下来要做的就简单多了,可以去网上找文章,浏览论坛,看看那些能提供更好的Web体验提示的示例. 然而不管是走哪条路,犯错却是每一个开发人员都不可避免的.虽然有些错误与某一个具体的行为相关,但有些错误却是所有Web开发人员都需要面对的挑战.因此,通过研究,体验和观察,我总

C# 程序员最常犯的 10 个错误

关于C# C#是达成微软公共语言运行库(CLR)的少数语言中的一种.达成CLR的语言可以受益于其带来的特性,如跨语言集成.异常处理.安全性增强.部件组合的简易模型以及调试和分析服务.作为现代的CLR语言,C#是应用最为广泛的,其应用场景针对Windows桌面.移动手机以及服务器环境等复杂.专业的开发项目. C#是种面向对象的强类型语言.C#在编译和运行时都有的强类型检查,使在大多数典型的编程错误能够被尽早地发现,而且位置定位相当精准.相比于那些不拘泥类型,在违规操作很久后才报出可追踪到莫名其妙错