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 应用服务器

相关推荐
激流丶5 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
Themberfue9 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
让学习成为一种生活方式25 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
Mephisto.java25 分钟前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
晨曦_子画31 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
Yawesh_best40 分钟前
思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
笔记·语言模型·ai写作
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
Heavydrink1 小时前
HTTP动词与状态码
java
ktkiko111 小时前
Java中的远程方法调用——RPC详解
java·开发语言·rpc
计算机-秋大田1 小时前
基于Spring Boot的船舶监造系统的设计与实现,LW+源码+讲解
java·论文阅读·spring boot·后端·vue