接上篇html
七、sevlertjava
啊啊啊终于写到最重要的实现部分了。Servlet = Service + Applet,表示小服务程序。Servlet 是在服务器上运行的小程序。这个词是在 Java applet的环境中创造的,Java applet 是一种看成单独文件跟网页一块儿发送的小程序,它一般用于在客户端运行,结果获得为用户进行运算或者根据用户互做用定位图形等服务。服务器上须要一些程序,经常是根据用户输入访问数据库的程序。这些一般是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行Java,这种程序可以使用 Java 编程语言实现。在通讯量大的服务器上,JavaServlet 的优势在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需建立单独的进程,这意味着服务器端处理请求的系统开销将明显下降。
看不懂也不要紧,咱们只要知道,有了servlet,咱们就能够返回所请求的数据了。sevlert内置有doGet和doPost,分别响应发出的get请求和post请求。这里先学习一下最简单的get,仍是不带参数的那种sql
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数据,没加状态码之类的。用的是之前的项目,因此和教程一不太同样,本质上没区别的)数据库