Java复习第十六天学习笔记(JSP、Servlet),附有道云笔记链接

【有道云笔记】十六 4.2 JSP、Servlet

https://note.youdao.com/s/QccA5g1G

一、软件的结构

C/S (Client - Server 客户端-服务器端)

典型应用:QQ软件 ,飞秋,印象笔记。

特点:

  1. 必须下载特定的客户端程序。
  2. 服务器端升级,客户端升级。

B/S (Broswer -Server 浏览器端- 服务器端)

典型应用: 腾讯官方(www.qq.com) 163新闻网站(俗称:网站)

特点:

  1. 不需要安装特定的客户端(只需要安装浏览器即可!!)
  2. 服务器端升级,浏览器不需要升级!!!!

JavaWeb的程序就是b/s软件结构!!!

常见的市面上 应用服务软件

  1. WebLogic: BEA 公司的产品。 收费的。
  2. WebSphere : IBM公司的产品。收费的。
  3. JBoss: Redhat 公司的产品。收费的。
  4. Tomcat : 开源组织 Apache 的产品。免费的。

服务器作用:把服务器端的资源共享给外部访问。

二、IDEA、Tomcat环境搭建

1、如何将项目变成Web项目:

1、Help中点击Find Action

2、搜索Add Framework Support

3、勾选Web Application

2、配置tomcat

1、点击Edit Configurations

2、点击加好,选择Tomcat Server Local

-Dfile.encoding=UTF-8

浏览器既可以访问JSP也可以访问Servlet,但是绝大部分情况下浏览器不直接访问JSP,JSP主要用来展示数据,

所以绝大部分情况是先访问Servlet查找出数据来之后转发到JSP页面进行展示。

三、Servlet

1、什么是Servlet

Servlet运行在服务端的Java小程序,是sun公司提供的一套规范(接口),用来处理客户端的请求、响应动态资源给浏览器

JSP本质是Servlet

实现步骤:

1、创建类继承HttpServlet

2、覆盖未实现的方法--service方法

2、Servlet生命周期

JSP+Servlet是一个半成品的框架,我们是在这套框架上开发,所以要学习和遵守他的规范

Servlet 程序的生命周期由 tomcat服务器控制 的!!!!

Servlet 重要的四个生命周期方法

  1. 什么时候初始化
  2. 什么时候被调用
  3. 什么时候被销毁

构造方法:创建servlet对象的时候被调用。默认情况下,第一次访问这个servlet的时候调用构造方法创建对象。

构造方法只被调用一次,servlet对象在tomcat是单实例的。

init方法:initial 创建完servlet对象时候调用。只调用1次。

service:每次浏览器发出请求时候调用这个方法。调用n次。

destory:销毁servlet对象的时候调用。停止服务器或者重新部署web应用时候会销毁servlet对象。只调用1次。

Servlet只创建一次,是单例模式(这个类的对象只会有一个)。每次请求的时候会创建一个新的request、response。

LifeServlet.LifeServlet()

LifeServlet.init()

LifeServlet.service()

LifeServlet.service()

LifeServlet.service()

LifeServlet.destroy()

四、JSP

Servlet的作用: 用java语言开发动态资源的技术!!!

JSP的作用:用java语言(+html语言)开发动态资源的技术!!!

JSP本质就是servlet!!!

1、JSP的脚本:(脚本就是一段代码)

语法:

作用: 执行java代码

2、JSP表达式:

语法:

作用: 向浏览器输出变量的值或表达式计算的结果

//http://localhost:8080/JavaWeb/index.jsp //http://localhost:8080/JavaWeb/student @WebServlet("/student") public class StudentServlet extends HttpServlet { //默认访问service @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("StudentServlet.service"); Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; List<Student> list = new ArrayList<>(); try { connection = JDBCUtil.getConnection(); String sql = "SELECT id,name,age,gender FROM student"; //预编译 preparedStatement = connection.prepareStatement(sql); resultSet = preparedStatement.executeQuery(); while (resultSet.next()) {//判断下一个有没有,如果返回true而且指向下一个,没有返回false int id = resultSet.getInt("id"); String name = resultSet.getString("name"); int age = resultSet.getInt("age"); String gender = resultSet.getString("gender"); Student student = new Student(id, name, age, gender); list.add(student); } for (Student student : list) { System.out.println(student); } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { JDBCUtil.close(connection, preparedStatement, resultSet); } //把list数据放到req里面 req.setAttribute("list", list); //转发到student_list.jsp页面进行展示 req.getRequestDispatcher("student_list.jsp").forward(req, resp); } }

<%@ page import="com.situ.web.pojo.Student" %> <%@ page import="java.util.List" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <link rel="stylesheet" href="static/bootstrap-3.4.1-dist/css/bootstrap.css"> </head> <body> <% //JSP页面中可以嵌套Java代码 //JSP脚本:在这里可以写任意的Java代码 //request、response:JSP页面的内置对象 List<Student> list = (List<Student>) request.getAttribute("list"); %> <table class="table table-striped table-bordered table-hover table-condensed"> <tr> <td>ID</td> <td>名字</td> <td>年龄</td> <td>性别</td> <td>编辑</td> <td>删除</td> </tr> <% for (Student student : list) { %> <tr> <td><%=student.getId()%></td> <td><%=student.getName()%></td> <td><%=student.getAge()%></td> <td><%=student.getGender()%></td> <td>编辑</td> <td>删除</td> </tr> <% } %> </table> </body> </html>

五、URL路径

http://localhost:8080/JavaWeb/index.jsp?method=selectAll&id=2

http : 协议(http协议)

localhost:域名(为了方便记忆,最终定位地址还是要将域名转换为ip地址) local:本地 host:主机

本地域名:localhost 127.0.0.1

外部域名:www.baidu.com

8080:端口号

8080:tomcat默认端口

3306:mysql默认端口

JavaWeb:找到部署到webapps下面的JavaWeb这个应用

index.html:资源的名字

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

张微博 weibo 微博

六、Tomcat

1、Tomcat 的目录结构

|-bin: 存放 tomcat 的命令。binary

startup.bat

shutdown.bat

|- conf : 存放 tomcat 的配置信息。其中 server.xml文件是核心的配置文件。 configuration

|-lib :支持 tomcat软件运行的 jar 包。其中还有技术支持包,如 servlet ,jsp lib: library

|-logs :运行过程的日志信息

|-temp: 临时目录 temp:temporary

|-webapps : 共享资源目录。 web 应用目录。 application 应用程序

|-work : tomcat的运行目录。 jsp 运行时产生的临时文件就存放在这里

2、项目部署

工作空间项目(写代码看到的) 和 tomcat部署的web项目是有差别的:

真正访问的是部署到tomcat的web项目下面的所有资源

tomcat部署的web项目:

--WEB-INF目录:

-- web.xml:web项目的核心配置文件

-- classes目录:放置字节码文件的目录(把src下面java代码编译后放到这个目录下面)

-- lib目录:放置依赖的jar包

--index.jsp

3、Tomcat特点:

1:Tomcat 是一个 Servlet 容器,可以运行 Java Servlet 和 JSP 等 Java Web 技术,可以处理 HTTP 请求并生成动态的 Web 内容。

2:支持多种平台

Tomcat 可以运行在各种操作系统上,包括 Windows、Linux、macOS 等,且支持多种 Java 开发环境。

3:Servlet 和 JSP 支持

Tomcat 是一个 Servlet 容器,支持运行 Java Servlet 和 JSP,可以处理来自客户端的 HTTP 请求,并生成动态的 Web 内容。

4:静态页面服务

除了 Servlet 和 JSP,Tomcat 也可以用来提供静态页面的服务,如 HTML、CSS、JavaScript 等。

总的来说,Tomcat 是一个功能强大、易于使用和配置的 Java Web 应用服务器

相关推荐
楚韵天工3 分钟前
宠物服务平台(程序+文档)
java·网络·数据库·spring cloud·编辑器·intellij-idea·宠物
helloworddm5 分钟前
Orleans Stream SubscriptionId 生成机制详解
java·系统架构·c#
星域智链8 分钟前
宠物智能用品:当毛孩子遇上 AI,是便利还是过度?
人工智能·科技·学习·宠物
失散138 分钟前
分布式专题——43 ElasticSearch概述
java·分布式·elasticsearch·架构
ajsbxi9 分钟前
【Java 基础】核心知识点梳理
java·开发语言·笔记
呱呱巨基26 分钟前
vim编辑器
linux·笔记·学习·编辑器·vim
新子y33 分钟前
【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
开发语言·笔记·python
聪明的笨猪猪35 分钟前
Java JVM “调优” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
"菠萝"1 小时前
C#知识学习-017(修饰符_6)
学习·c#
重整旗鼓~1 小时前
28.redisson源码分析分布式锁
java·开发语言