一、JavaWeb简介:
1.Tomcat目录:
bin目录下有启动Tomcat的startup.bat文件,以及关闭Tomcat的shutdown.bat文件。
关闭Tomcat可以通过直接点击命令行窗口的关闭按钮,也可以通过shutdown.bat来关闭。
一般建议通过第二个方法关闭Tomcat。
2.简单编写一个Java Web程序
1.打开Tomcat
2.在Tomcat目录下地webapps目录下创建一个文件夹:myhome
3.在myhome目录下创建一个.jsp文件:index.jsp。
index.jsp文件是Tomcat服务器默认的欢迎文件,
即如果浏览器中只输入项目的根目录http://localhost:8080/myhome,它就会默认打开index.jsp文件。
编写index.jsp
创建一个WEB-INF文件
在WEB-INF文件夹里面创建classes与lib文件,再从\webapps\examples\WEB-INF中复制一个web.xml文件到WEB-INF文件夹
WEB-INF目录结构:
1、WEB-INF是Java的WEB应用的安全目录。(所谓安全就是客户端无法访问,只有服务端可以访问。)
2、web.xml是项目部署文件。
3、lib里面存放要使用的.jar包
4、classes文件夹里面存放编译生成的字节码文件
4.运行
在浏览器中输入localhost:8080/myhome/index.jsp
5.结果
3.修改Tomcat服务器默认端口号
修改conf/web.xml文件中的
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
把“8080”更改即可
二、JSP
JSP简介
JSP全名为Java Sever Pages,即Java服务器页面。
JSP的主要作用是代替Servlet程序回传HTML页面的数据。
JSP的本质上是一个Servlet程序。
JSP基础语法
1、JSP页面元素
(1) 三大指令元素
1、 page 通常位于JSP页面顶端,同一个页面可以有多个page指令。page指令可以修改页面中的一些组要属性和行为。
2、include 将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句
3、 tagelib 使用标签库定义新的自定义标签,在JSP页面中启动定制行为
page指令语法:
<%@ page 属性1="属性值" 属性2="属性值"...属性n="属性值"%>
以下属性均可以写在page指令中:
- contentType属性:表示JSP返回的数据类型是什么,即response.setContentType()的参数值
- languang属性:表示JSP翻译后是什么语言,(目前只支持Java)
- pageEncoding属性:表示JSP文件使用的字符集
- import属性:引入包,与Java一致
- autoFlash属性:设置out输出流缓冲区满了后是否自动刷新缓冲区,默认值是true
- buffer属性:设置缓冲区大小,默认8KB(注意:如果out缓冲区满了之后不能自动刷新的话会报错)
- errorPage属性:设置当JSP页面运行出错时自动跳转到的页面(错误信息页面)的路径
- isErrorPage属性:设置当前JSP页面是否是错误信息页面,默认是false。如果是true可以获取错误信息
- session属性:设置访问当前JSP页面时是否会创建HttpSession对象,默认值是true
- extends属性:设置JSP页面翻译出来的Java类默认继承谁
(2)JSP的三种注释
JSP的注释:
<%--JSP注释--%>//客户端不可见
HTML的注释:
<!--html注释-->//客户端可见
JSP脚本注释:
//单行注释
/* 多行注释 */
2、JSP脚本元素
1、声明脚本
格式:<%! 声明Java代码 %>
作用:可以定义Java代码的属性,方法,静态代码块,内部类等
特点:不会在浏览器的页面上显示出来,仅存在于JSP翻译后的Java类中
代码演示:
<%--
Created by IntelliJ IDEA.
User: spider-man
Date: 2021/5/8
Time: 11:22
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--声明类属性--%>
<%!
private String name = "Bob";
int weight = 50;
%>
<%--声明类方法--%>
<%!
public static void Hello() {
System.out.println("Hello");
}
%>
<%--声明静态代码块--%>
<%!
static {
int number = 0;
System.out.println("程序开始执行");
}
%>
</body>
</html>
2.表达式脚本
格式:<%=表达式%>
作用:在浏览器页面上输出数据(只有此脚本可以在浏览器的页面上输出数据)
特点:
(1) 所有的表达式脚本都会被翻译到对应的Java类的_jspService()方法中,故表达式脚本可以直接使用_jspService()方法参数中的对象
(2) 表达式脚本都会被编译后的Java类中的out.print()方法输出到浏览器页面上
(3) 表达式脚本中的表达式不能以分号结束
3.JSP页面生命周期
jspService()方法被调用来处理客户端的请求。对于每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统资源的需求,提高系统并发量以及缩短反应时间。但也要注意多线程的编程带来的同步问题,由于该Servlet始终驻于内存,所以相应非常快。