在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中拷贝这个文件,最好别手写】
第六步:编写一个 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 类名能够匹配上
javajava 完整包名.类名 javajava /a/b/c/d
地址栏上的 url 要与 web.xml 中
http://127.0.0.1:8080/crm//a/b/c/d
地址栏上的url 与
创建工程,按下图直接点OK即可.创建完之后,IDEA 会自动生成一个符合Servlet 规范的目录webapp的目录结构注意:在IDEA生成的目录中有一个 web 目录,它就是webapp的根
编写Servlet之前先把 Tomcat 中的 jar 包引进来
File ——Project Structure 将类库引进模块中在WEB-INF 目录下新建一个 lib 子目录,将连接数据库的jar包引进来
实现 Servlet 中的 5 个方法,在 service() 方法中编写代码public class StudentServlet implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { //设置相应内容类型 servletResponse.setContentType("text/html"); //打印到浏览器 PrintWriter writer = servletResponse.getWriter(); //连接数据库 Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/studentgrade", "root", "root"); String sql = "select * from course"; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); //处理结果集 while (rs.next()) { String cno = rs.getString("cno"); String cname = rs.getString("cname"); String classHour = rs.getString("classHour"); //打印 writer.print(cno + "," + cname + "," + classHour + "
"); } } catch (Exception e) { e.printStackTrace(); } finally { //释放资源 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }
编辑配置文件 web.xml
StudentList yangzhaoguang.servlet.StudentServlet StudentList /servlet/Student
在 webapp 中新建 HTML 网页,注意:不能在WEB-INF 中创建
Title StudentList
部署Tomcat
部署完成后就启动Tomcat 服务器,在地址栏上输入
http://localhost:8080/xmm/servlet/Student
最终将数据库中的内容成功的显示到了页面上。
以下是 Tomcat 部署的配置信息
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)