zoukankan      html  css  js  c++  java
  • JAVA写接口傻瓜(#)教程(四)

      接上篇

      7、sevlert

        啊啊啊终于写到最重要的实现部分了。Servlet = Service + Applet,表示小服务程序。Servlet 是在服务器上运行的小程序。这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行Java,这种程序可使用 Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。
        看不懂也没关系,我们只要知道,有了servlet,我们就可以返回所请求的数据了。sevlert内置有doGet和doPost,分别响应发出的get请求和post请求。这里先学习一下最简单的get,还是不带参数的那种

        

    import com.alibaba.fastjson.JSONObject;
    
    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 java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.*;
    import java.util.*;
    import java.util.Date;
    
    @WebServlet("/hello")//注解,免于在xml注册,/hello表示在主页后加/hello访问此页面
    public class test extends HttpServlet {
        private String message;
        public void init() throws ServletException{
    
        }
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {//相应不带参数的get
    
            String dbURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=S-T";
            String userName="sa";
            String userPwd="111";
            String sql="select * from Student";
            List<student> students=new ArrayList<>();
            Connection dbConn=null;
            try {
                String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
                Class.forName(driverName);//反射JDBC包,这个一定要加,不然会报错
                // 设置响应内容类型
                response.setContentType("text/html");
                response.setCharacterEncoding("UTF-8");
               dbConn= DriverManager.getConnection(dbURL,userName,userPwd);
                Statement statement=dbConn.createStatement();
                ResultSet resultSet=statement.executeQuery(sql);
               while (resultSet.next()){
                   student st=new student();
                   st.setName(resultSet.getString("Sname"));
                   st.setId(resultSet.getString("Sno"));
                   st.setSex(resultSet.getString("Ssex"));
                   st.setAge(resultSet.getString("Sage"));
                   students.add(st);
               }
                response.getWriter().println(JSONObject.toJSONString(students));//注意这里不是控制台输出了,是HttpServletResponse,用于返回json给http请求方
                //out.println(JSONObject.toJSONString(resultSet));
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            finally {
                try
                {//关闭连接
                    if(dbConn!=null)
                    {
                        dbConn.close();
                        dbConn=null;
                    }
                }
                catch(Exception ex)
                {
                }
            }
    
        }
    }
    

         访问http://localhost:8081/a/hello,得到json数组(简单显示json数据,没加状态码之类的。用的是以前的项目,所以和教程一不太一样,本质上没区别的)

        

        

  • 相关阅读:
    java web报错The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    在cmd下执行mvn help:system 报错
    win10安装mysql5.7
    centos7装单机hadoop2.7.3
    win10装jdk
    oracle中批量修改年份和月份,但不修改时分秒
    Python 正则匹配网页内的IP地址及端口号
    python 爬取网页内的代理服务器列表(需调整优化)
    python 爬取百度url
    Python 爬取SeeBug poc
  • 原文地址:https://www.cnblogs.com/wxy990118/p/10696737.html
Copyright © 2011-2022 走看看