查看: 98|回复: 2

java

[复制链接]

3

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2023-1-14 15:10:00 | 显示全部楼层 |阅读模式
1.JVM
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
说的通俗一点,我们的java程序都是运行在jvm上的运行的,正是这一点所以java语言有一个特点是跨平台性。这个平台指的是你的电脑上的操作系统,比如,window系统、linux系统、os系统等。


补充:javac 、java 、java -version[查看当前jdk版本,前提我们的jdk环境变量必须配置好]
javac 和 java 命令存放路径:jdk/bin 目录


2.JDK
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具


JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。
SE(JavaSE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。
EE(JavaEE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。从2018年2月26日开始,J2EE改名为Jakarta EE [1] 。
ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。
没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。
3.JRE
Java运行环境(Java Runtime Environment,简称JRE)是一个软件,由Sun公司所研发,JRE可以让计算机系统运行Java应用程序(Java Application)。
JRE的内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类别函数库(Class Library)。
4.JSP三大指令
https://blog.csdn.net/weixin_41547486/article/details/81476015
https://www.cnblogs.com/huiyuantang/p/5332428.html
https://blog.csdn.net/zhang150114/article/details/89434617
https://www.cnblogs.com/lihuiyy/archive/2012/02/24/2366806.html
https://blog.csdn.net/pan_junbiao/article/details/88662176
5.什么是jsp指令
JSP指令的格式:<%@指令名 attr1=”” attr2=”” %>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的。
JSP中有三大指令:page、include、taglib,最为常用,也最为复杂的就是page指令了,其实所谓的复杂就是指page指令中的属性比较多而已。
Tomcat编译系统会根据JSP的指令信息来编译JSP,生成Java文件。
在生成的Java文件中,不存在指令信息!
6.PAGE
language="java: 这个属性用于设定jsp的编程语言,目前java是唯一有效的编程语言。
pageEncoding指定的是当前JSP页面的编码!Tomcat编译系统会使用这个编码把JSP编译成Java文件。
  contentType指定的是响应给客户端时使用的编码,即对应response.setConteType()方法的参数值! Tomcat都会把响应正文转换成UTF-8编译,然后发送给客户端,并且会在响应头中设置Content-Type头信息为text/html;charset=utf-8,这样浏览器就知道使用服务器发送过来的正文使用了什么编码。
import是page指令中一个很特别的属性!
import属性值对应“真身”中的import语句。真身其实就是java代码中import导入的包。比如说,在我们正常写的一个java代码中需要导入List包【import java.util.List】,现在在jsp页面中当用到各种工具包时也需要导入。
import属性值可以使逗号:<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="cn.entity.User,java.util.List,java.util.ArrayList" %>


但是,我们一般会使用多个page指令来导入多个包:
<%@ page import="cn.entity.User" %>
<!-- java.util.* ,*表示引入java.util包下的所有java文件 -->
<%@ page import="java.util.*" %>
6.1 案例
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ page import="cn.entity.User" %>
<!-- java.util.* ,*表示引入java.util包下的所有java文件 -->
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
  /* 定义个集合用来存放User实例对象 */
  List<User> list = new ArrayList<User>();
  /* 向集合中添加数据【User实例对象】 */
  list.add(new User("张三","计算机科学与技术",20));
  list.add(new User("李四","软件工程",20));
  list.add(new User("王五","网络工程",20));
%>
<table>
<tr>
<th>姓名</th><th>系别</th><th>年龄</th>
</tr>
<%
for(int i = 0 ;i<list.size();i++){
%>
<tr>
<td><%=list.get(i).getName() %>
</td><td><%=list.get(i).getSdept() %>
</td><td><%=list.get(i).getAge() %></td>
</tr>
<%  
}
%>
</table>
</body>
</html>

7.include
通俗的讲include指令就是将外部的一个文件包含当前文件中 .
include指令表示静态包含!,当然还有一种包含关系为 动态包含
include指令只有一个属性:file,指定要包含的页面,
例如:


<!--静态包含,将外部的一个名叫header.jsp的文件包含到该文件中 -->
<%@ include file="header.jsp" %>
静态包含的过程[和动态包含不一样的地方,也是面试会问到的]:当main.jsp页面包含了header.jsp页面后,在编译main.jsp页面时,需要把main.jspheader.jsp页面合并成一个文件,然后再编译成Servlet(Java文件)。
验证:
在我们的tomcat 安装目录下有一个work文件夹,这个文件夹用来存放tomcat 编译jsp文件后的java源文件和字节码文件


在这文件夹下没有找到我们的main.jsp文件编译后的java源文件和class文件,这个时候需要我们启动服务器,然后在浏览器中访问main.jsp 文件



这个时候我们再去查看work目录:


8.taglib
在JSP页面中使用第三方的标签库时,需要使用taglib指令来“导包”。
例如:
<!-- 引入jstl的核心标签库 -->
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
其中prefix表示标签的前缀,这个名称可以随便起,但是我们一般起名为c,
uri是由第三方标签库定义的,所以你需要知道第三方定义的uri。

9.jsp动态指令
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>标题</title>
</head>
<body>
<h2>jsp动态指令</h2>
<!-- jsp:include
  jsp:param
  jsp:forword
  jsp:useBean -->
<!-- jsp:include 动态包含
  @ include file="footer.jsp" 静态包含
  先把要包含的jsp页面导入到当前jsp页面之后,形成一个新的jsp页面,在对这个新的jsp页面编译,
  所以最终看到的只有一个编译的jsp页面
  面试:
  include 指令的包含过程为静态包含,因为在使用 include 指令包含文件时,
  服务器最终执行的是将两个文件合成后由 JSP 编译器编译成的一个 Class 文件,
  所以被包含文件的内容应是固定不变的,
  若改变了被包含的文件,则主文件的代码就发生了改变,因此服务器会重新编译主文件。
动作的包含过程为动态包含,通常用来包含那些经常需要改动的文件。
因为服务器执行的是两个文件,被包含文件的改动不会影响主文件,因此服务器不会对主文件重新编译,
而只须重新编译被包含的文件即可。并且对被包含文件的编译是在执行时才进行的,也就是说,
只有当 jsp:include 动作被执行时,使用该标记包含的目标文件才会被编译,否则,被包含的文件不会被编译。
-->
<%-- <%@ include file="footer.jsp" %> --%>
<jsp:include page="footer.jsp">
<jsp:param value="12" name="arg_0"/>
<jsp:param value="2334" name="arg_1"/>
<jsp:param value="1" name="arg_2"/>
</jsp:include>
<form method="post" action="" name="">
  用户名:<input type="text" name="usr"/>
  <br />
  密码:<input type="password" name="pwd"/>
  <br />
  <input type="submit" value="提交"/>
</form>
<%
  String usr = request.getParameter("usr");
  String pwd = request.getParameter("pwd");
if(usr!=null &&pwd!=null){
  %>
   <jsp:forward page="index.jsp"></jsp:forward>
  <%  
  }
%>
<!-- 在大多数的网络应用程序中,都有这样的情况:在用户成功登录后转向欢迎页面,此处的“转向”,就是跳转。
jsp:forward 动作标记就可以实现页面的跳转,
用来将请求转到另外一个 JSP、HTML 或相关的资源文件中。
当 jsp:forward 动作标记被执行后,当前的页面将不再被执行,
而是去执行该标记指定的目标页面,但是,用户此时在地址栏中看到的仍然是当前网页的地址,而内容却已经是转向的目标页面了。 -->
<%=usr %>
<%=pwd %>
</body>
</html>

footer.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<p style="font-size:14px;color:red;">
加油努力奋斗
</p>
<!-- 接收main.jsp页面 jsp:param指令传递过来的参数 -->
<%
String arg_0 = request.getParameter("arg_0");
String arg_1 = request.getParameter("arg_1");
String arg_2 = request.getParameter("arg_2");
int a = Integer.parseInt(arg_0);
int b = Integer.parseInt(arg_1);
int c = Integer.parseInt(arg_2);
int max ;
if(a > b){
if(a > c){
  max = a;
  }else {
  max = c;
  }
}else {
if(b > c){
  max = b;
  }else {
  max = c;
  }
}
%>
<%=arg_0 %>
<%=arg_1 %>
<%=arg_2 %>
<br/>
<%=max %>
</body>
</html>
回复

使用道具 举报

3

主题

10

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2025-2-25 07:45:19 | 显示全部楼层
边撸边过
回复

使用道具 举报

3

主题

9

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2025-3-8 13:30:01 | 显示全部楼层
我也是坐沙发的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表