zoukankan      html  css  js  c++  java
  • 利用 Servlet 访问数据库返回 JSON 数据

      本次使用的是 Mysql 数据库,表中有已以几条记录,我们通过 Servlet  读取数据,并返回为 JSON 格式的数据。

    1.  新建工程文件,项目结构如图

    用到的 jar 包下载地址 https://files.cnblogs.com/files/boguse/jar.zip

    由于Eclipse web 项目中,当执行 Class.forName("om.mysql.jdbc.Driver");时 不会去查找驱动的。所以本实例中我们需要把 mysql-connector-java-5.1.39-bin.jar 拷贝到 WEB-INF 下 lib 目录。

    2. Servlet 编写

    Servlet的定义:Servlet(Server Applet)-全称Java Servlet,是用Java编写的服务器端程序。 其主要功能在于交互式地浏览和修改数据,生成动态Web内容。 Servlet是100%运行在服务器端,为客户端请求作出响应的纯java应用程序。

     1 package TestJson;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import java.sql.*;
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 import net.sf.json.JSONArray;
    11 import net.sf.json.JSONObject;
    12 
    13 
    14 public class Test extends HttpServlet {
    15          private static final long serialVersionUID = 1L;
    16       
    17     public Test() {
    18         super();
    19         // TODO Auto-generated constructor stub
    20     }
    21 
    22     /**
    23      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    24      */
    25     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    26         
    27         // 设置响应内容类型
    28         // 设置响应内容类型
    29         response.setContentType("text/json; charset=utf-8");
    30                 PrintWriter out = response.getWriter();
    31                 
    32                 
    33                  try { 
    34                      
    35                      Class.forName("com.mysql.jdbc.Driver");
    36                      Connection connect = DriverManager.getConnection( 
    37                              "jdbc:mysql://localhost:3306/test?useSSL=false","map","maptest");
    38 
    39                     Statement stmt = connect.createStatement(); //创建Statement对象
    40                     String sql;
    41                     sql = "SELECT * FROM admininfo";
    42                     ResultSet rs = stmt.executeQuery(sql);
    43                     JSONArray jsonarray = new JSONArray();  
    44                     JSONObject jsonobj = new JSONObject(); 
    45                     // 展开结果集数据库
    46                     while(rs.next()){
    47                         // 通过字段检索
    48                         jsonobj.put("管理员", rs.getString("Aname"));  
    49                         jsonobj.put("密码", rs.getString("Apwd"));  
    50                         jsonobj.put("等级", rs.getString("Alevel"));                           
    51                          
    52                         jsonarray.add(jsonobj);             
    53                       }
    54                     // 输出数据
    55                     out = response.getWriter();
    56                     
    57                     out.println(jsonarray);
    58                     // 完成后关闭
    59                     rs.close();   
    60                     stmt.close();   
    61                     connect.close();                  
    62                  }catch (Exception e) { 
    63                       out.print("get data error!"); 
    64                       e.printStackTrace(); }
    65                       
    66                   }     
    67                    
    68             /**
    69              * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    70              */
    71             protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    72                 // TODO Auto-generated method stub
    73                 doGet(request, response);
    74             }
    75         }

    3. 配置文件(web.xml)

    想要运行该 Servlet,需要在web容器里注册上面的 Servlet,在 web.xml 文件中加入如下代码

    <servlet>
         <servlet-name>Test</servlet-name> 
         <servlet-class>TestJson.Test</servlet-class>
        </servlet>
        
        <servlet-mapping>
            <servlet-name>Test</servlet-name>
            <!--浏览器中输入的url,可以随意取名  但是注意加"/" -->
            <url-pattern>/Test</url-pattern>
        </servlet-mapping>
    

      

    4. 将项目添加至 Tomcat ,并运行 Tomcat 

    现在调用这个 Servlet,输入链接:http://localhost:8080/TestDemo/Test ,将显示以下响应结果:

    我当初遇到了这个问题,Tomcat 运行后无法正常访问 Servlet ,然后发现是应为 Servlet 没有编译,这时需要将 Ecplise 设置为自动编译,然后重启 Ecplise 即可。

    原文地址:http://www.cnblogs.com/boguse/p/6769092.html 

  • 相关阅读:
    hdu 4297 One and One Story 夜
    hdu 4280 Island Transport 夜
    1389. Roadworks 夜
    hdu 4289 Control 夜
    hdu 4291 A Short problem 夜
    hdu 4284 Travel 夜
    1080. Map Coloring 夜
    正则中的转义符\
    起重复出现作用的量词*和+
    安卓的权限大全和动态使用安卓权限
  • 原文地址:https://www.cnblogs.com/boguse/p/6769092.html
Copyright © 2011-2022 走看看