Java EE(现在称为Jakarta EE)是Java平台的一个扩展,专注于开发和运行企业级应用程序。它提供了一组标准规范和API,用于构建可扩展、安全、可靠且高性能的分布式应用程序。Java EE涵盖了广泛的功能领域,包括Web应用程序开发、持久化、消息传递、事务管理、安全性等。
Java EE提供了一整套的规范,其中包括:
Servlet
或者Filter
拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。根据可请求资源的(服务器提供资源)类型的不同,分静态web项目和动态web项目
项目里面的资源只有静态资源,例如.html
、.js
、.css
、.jpg
等
在静态Web程序中,客户端使用Web浏览器经过网络连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器需要得到哪个静态资源,所有的请求交给Web服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过Web服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。
静态Web项目的特点
静态网站是最初的建站方式,浏览者所看到的每个页面是建站者上传到服务器上的一个 html ( htm )文件,这种网站每增加、删除、修改一个页面,都必须重新对服务器的文件进行一次下载上传。网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;
静态网页的内容相对稳定,因此容易被搜索引擎检索;
静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;
静态网页的交互性较差,在功能方面有较大的限制。如:不能实现用户注册和用户登录的功能
.jsp
、.php
、.asp/.aspx
等.jsp
、.asp/.aspx
、.php
),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。服务器:指安装了服务器软件的计算机
服务器软件:软件,下载安装即可使用
官网:https://tomcat.apache.org/
tomcat内置的配置文件中,需要寻找JAVA_HOME
的环境变量,所以使用前必须配置JDK路径至环境变量,可执行命令查看是否配置
echo %JAVA_HOME%
$JAVA_HOME
tomcat\bin
,启动startup.bat
(windows)或startup.sh
(linux)tomcat\bin
,执行命令catalina run
tomcat/bin/shutdown.bat
tomcat的默认端口号是:8080
编辑tomcat/conf/server.xml
,Connector
节点port
属性即为tomcat端口号,修改后需要重启tomcat才可生效
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
#修改tomcat/conf/server.xml中URIEncoding
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
#修改tomcat/bin/catalina.bat,在第二行添加如下
@echo off
set JAVA_OPTS=-Dfile.encoding=UTF-8
由于tomcat默认的日志输出是UTF-8
,如果在windows的dos窗口下会出现中文乱码
可以修改tomcat/conf/logging.properties
中的编码格式为GBK
即可
ava.util.logging.ConsoleHandler.encoding = GBK
在webapps中,每一个目录即为一个项目,项目的访问路径默认为目录名
ROOT
目录的项目访问路径默认为/
可以修改tomcat/conf/server.xml
文件,在节点Server/Engine/Host
中添加Context
指定项目的访问路径
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- 配置webapps/myproject项目的访问路径为/ -->
<Context path="" docBase="myproject" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
IDEA/Settings/Build,Execution,Deployment/Application Servers
点击File/New/Project
,创建普通java项目
右键项目,选择Add Framework Support
,添加框架支持
选择Java EE/Web Application
创建后的目录结构为
点击Add Configuration
,进入Run/Debug Configurations
面板
点击左上角的+
,选择Tomcat/local
点击Deployment
,点击Deploy at the server startup
下的+
,选择Artifact
点击Apply
,点击OK
进入Project Structure
,如下操作
选择Tomcat提供的Servlet依赖即可
进入Project Structure
,如下操作,选择Archive
选择Build
选择刚才创建的Artifact
即可
点击File/New/Project
,创建普通Java Enterprise
项目
目录结构如下
将web项目交给服务器来进行管理
war包是 Sun 提出的一种 web 应用程序格式。它与 jar 类似,是很多文件的压缩包。war 包中的文件按照一定目录结构来组织。
一般其根目录下包含有.html
和.jsp
文件,或者包含有这两种文件的目录,另外还有WEB-INF
目录。通常在WEB-INF
目录下含有一个web.xml
文件和一个 classes
目录。web.xml
是这个应用的配置文件,而classes
目录下则包含编译好的 servlet 类和 jsp,或者 servlet 所依赖的其他类(如 JavaBean)。通常这些所依赖的类也可以打包成 jar 包放在WEB-INF
下的lib
目录下。
可以使用jar
命令打包war包,一样的步骤,只是后缀war而已。
war包放置在tomcat的webapps目录下后,启动tomcat,tomcat会自动解压war。
将web项目或war包,放入到tomcat\webapps
文件夹中,然后开启tomcat服务器,打开浏览器,输入localhost:8080/项目名/资源名
在路径tomcat/conf/Catalina/localhost
,在localhost中,建立配置文件:(xxx.xml
),内容如下
<Context path="工程的访问路径" docBase="工程目录路径"/>
如果没有此目录,可以自行创建或者启动一次tomcat就会自动创建
此方法的工程不需要放在webapps中,可以放置在磁盘任何地方
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
</web-app>
web.xml
是Java Web项目的配置文件,一般的Web工程都会用到web.xml
来配置,主要用来配置Listener
,Filter
,Servlet
等。
但需要注意的是:web.xml
并不是必须的,一个web工程可以没有web.xml
文件
web.xml
文件的作用包括:
定义了一个名为HelloServlet的Servlet,并将其映射到URL模式为/hello
的请求
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
定义了一个名为LoggingFilter的过滤器,并将其应用于所有请求。
<filter>
<filter-name>LoggingFilter</filter-name>
<filter-class>com.example.LoggingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoggingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
指定了在访问根目录时,默认显示的文件(例如index.html
或index.jsp
)。
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
指定了当发生404错误时,显示error404.html
页面
<error-page>
<error-code>404</error-code>
<location>/error404.html</location>
</error-page>
用于指定Web应用程序的显示名称,也就是根路径
<display-name>myweb</display-name>
用于定义全局的上下文参数,供整个Web应用程序使用
<context-param>
<param-name>database-url</param-name>
<param-value>jdbc:mysql://localhost:3306/mydb</param-value>
</context-param>
用于将文件扩展名映射到MIME类型,指示浏览器如何处理特定类型的文件
<mime-mapping>
<extension>pdf</extension>
<mime-type>application/pdf</mime-type>
</mime-mapping>
用于配置会话管理相关的参数,如会话超时时间和Cookie配置
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
<name>SESSIONID</name>
<path>/</path>
<http-only>true</http-only>
</cookie-config>
</session-config>
用于定义安全约束,限制对某些资源的访问。可以指定受保护的URL模式、所需的角色等
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
用于配置Web应用程序的登录设置,包括登录页面和错误页面。
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login-error.jsp</form-error-page>
</form-login-config>
</login-config>
用于配置JSP引擎的相关设置,如JSP编译选项、标签库等
<jsp-config>
<taglib>
<taglib-uri>http://example.com/mytags</taglib-uri>
<taglib-location>/WEB-INF/mytags.tld</taglib-location>
</taglib>
</jsp-config>