• 首页
  • 栏目
  • CRM
  • B/S系统结构的角色与协议与Servlet简单的应用

B/S系统结构的角色与协议与Servlet简单的应用

  • 2022-01-17
  • Admin

一、B/S系统结构的角色与协议

  •  在B/S结构中有哪些角色呢?
    • 浏览器开发团队(谷歌,百度,火狐,IE)
    • WEB Server 开发团队(Tomcat ,Jetty,WebLogic...)
    • DB Server 开发团队(My SQL,Oracle...)
    • webapps的开发团队(程序员...)

角色与角色之间需要遵守哪些规范,哪些协议?

  • 先思考一个问题:假设我们的手机充电器坏掉了,在别的厂家买了一个充电器,不仅我们手机能用这个充电器,别的手机也能用。这说明了什么?是不是说明了手机的厂家与充电器的厂家都共同遵守了一个规范。才能使充电器与手机匹配上
  • WEB Server 服务器与 webapps 都共同遵守一套规范,这个规范就是 Serverlet ,SUN公司制定,能保证 我们在 Tomcat 服务器上开发的webapps 在其他服务器上也能运行
  • Browser 与 WEB Server 之间有一套传输协议:HTTP(超文本链接协议)W3C组织制定
  • DB Server 与 WEB Server 之间的规范:JDBC,SUN公司制定
  • 通过我们分析,路径 与  java小程序之间的对应关系应该有什么指定呢?
    • 将路径 和 java小程序【某个Servlet 】对应的关系 写入配置文件中,Tomcat 通过解析配置文件匹配与路径对应的java小程序【某个Servlet】
  • 对于我们程序员来说,只需要干俩件事
    • 1、编写一个类实现 Servlet 接口
    • 2、将 路径  和 类 的对应关系写到配置文件中
  • 注意:这个配置文件不能瞎写,文件名是固定的,文件的存放路径也是固定的。
  • 所以,其实Servlet不仅仅是一个接口,同时还规定了配置文件以及webapps 存放位置的一些个规范。

二、Servlet 的简单应用

  • 开发一个带有Servlet【java小程序】的webapp
    • 第一步:在webapps目录下新建一个目录,crm【目录名随意】。
      • crm 就是 webapp 的根目录
    • 第二步:在 crm 目录下新建一个目录:WEB-INF。
      • 注意:名字不能随便乱写,必须大写,这是Servlet 中规范的。
    • 第三步:在WEB-INF目录下新建一个目录:classes
      • 这个目录名字也不能随便写,都是小写,也是规范之一。这个目录下存放的是字节码文件,Java编译之后的文件
    • 第四步:在WEB-INF 目录下新建一个目录:lib
      • 这个目录不是必须的,但是如果 webapp 需要第三方的 jar 包的话,这个 jar 包需要放到这个目录下边
    • 第五步:在WEB-INF 目录下新建一个文件:web.xml
      • 这个文件是必须要有的,名字必须一模一样,这个 web.xml 文件 就是配置文件,在这个配置文件中 描述了 Servlet 与 路径之间的关系。【可以从其他webapp中拷贝这个文件,最好别手写】
  1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  4. http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  5. version="3.1"
  6. metadata-complete="true">
  7. web-app>
  • 第六步:编写一个 java 小程序,这个程序必须要实现 Servlet 接口
    • Servlet  接口 属于是 JavaEE中的规范了,并不在JDK中。
    • Tomcat 也需要实现Servlet 规范。所以在Tomcat 中也实现了Servlet 接口。
      • 在Tomcat 的lib 目录下有这个servlet-api.jar 包,解压之后你会在 Javaax-Servlet 目录下看到有 Servlet .class。这个完整的类名是:jakarta.serverlet 【自从javaEE9 之后改成 :jakarta】
    • 编写 这个 java小程序,在哪里写都可以,但是需要将编译之后的 字节码文件放到 classes目录下
    • 第七步:编辑配置文件,让 请求路径Servlet 类名能够匹配上
      1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
      4. http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
      5. version="3.1"
      6. metadata-complete="true">
      7. <servlet>
      8. <servlet-name>javajavaservlet-name>
      9. <servlet-class>完整包名.类名servlet-class>
      10. servlet>
      11. <servlet-mapping>
      12. <servlet-name>javajavaservlet-name>
      13. <url-pattern>/a/b/c/durl-pattern>
      14. servlet-mapping>
      15. web-app>
    • 地址栏上的 url 要与 web.xml 中 的路径保持一致。

    • http://127.0.0.1:8080/crm//a/b/c/d

    •  地址栏上的url 与 的区别就是:地址栏上的 url 带项目名 :/crm

  •  如何使用集成开发工具开发Servlet【IDEA】
    • 创建工程,按下图直接点OK即可
    • .
    • 创建完之后,IDEA 会自动生成一个符合Servlet 规范的目录webapp的目录结构
    • 注意:在IDEA生成的目录中有一个 web 目录,它就是webapp的根

   

  • 编写Servlet之前先把 Tomcat 中的 jar 包引进来
    • File ——Project Structure   
    • 将类库引进模块中
    • 在WEB-INF 目录下新建一个 lib 子目录,将连接数据库的jar包引进来
    • 实现 Servlet 中的 5 个方法,在 service() 方法中编写代码
      1. public class StudentServlet implements Servlet {
      2. @Override
      3. public void init(ServletConfig servletConfig) throws ServletException {
      4. }
      5. @Override
      6. public ServletConfig getServletConfig() {
      7. return null;
      8. }
      9. @Override
      10. public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
      11. //设置相应内容类型
      12. servletResponse.setContentType("text/html");
      13. //打印到浏览器
      14. PrintWriter writer = servletResponse.getWriter();
      15. //连接数据库
      16. Connection conn = null;
      17. PreparedStatement ps = null;
      18. ResultSet rs = null;
      19. try {
      20. Class.forName("com.mysql.jdbc.Driver");
      21. conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/studentgrade", "root", "root");
      22. String sql = "select * from course";
      23. ps = conn.prepareStatement(sql);
      24. rs = ps.executeQuery();
      25. //处理结果集
      26. while (rs.next()) {
      27. String cno = rs.getString("cno");
      28. String cname = rs.getString("cname");
      29. String classHour = rs.getString("classHour");
      30. //打印
      31. writer.print(cno + "," + cname + "," + classHour + "
        "
        );
      32. }
      33. } catch (Exception e) {
      34. e.printStackTrace();
      35. } finally {
      36. //释放资源
      37. if (rs != null) {
      38. try {
      39. rs.close();
      40. } catch (SQLException e) {
      41. e.printStackTrace();
      42. }
      43. }
      44. if (ps != null) {
      45. try {
      46. ps.close();
      47. } catch (SQLException e) {
      48. e.printStackTrace();
      49. }
      50. }
      51. if (conn != null) {
      52. try {
      53. conn.close();
      54. } catch (SQLException e) {
      55. e.printStackTrace();
      56. }
      57. }
      58. }
      59. }
      60. @Override
      61. public String getServletInfo() {
      62. return null;
      63. }
      64. @Override
      65. public void destroy() {
      66. }
      67. }
    • 编辑配置文件 web.xml

      1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
      4. version="4.0">
      5. <servlet>
      6. <servlet-name>StudentListservlet-name>
      7. <servlet-class>yangzhaoguang.servlet.StudentServletservlet-class>
      8. servlet>
      9. <servlet-mapping>
      10. <servlet-name>StudentListservlet-name>
      11. <url-pattern>/servlet/Studenturl-pattern>
      12. servlet-mapping>
      13. web-app>
    • 在 webapp 中新建 HTML 网页,注意:不能在WEB-INF 中创建

      1. html>
      2. <html lang="en">
      3. <head>
      4. <meta charset="UTF-8">
      5. <title>Titletitle>
      6. head>
      7. <body>
      8. <a href="/xmm/servlet/Student">StudentLista>
      9. body>
      10. html>
    • 部署Tomcat 

    •  

       部署完成后就启动Tomcat 服务器,在地址栏上输入

原文:https://blog.csdn.net/aetawt/article/details/122548675

联系站长

QQ:769220720