idea和Tomcat整合
Tomcat
首先介绍一下Tomcat
LInux下在官网上下载后可以直接解压使用,官网下载地址https://tomcat.apache.org/download-90.cgi
介绍一下Tomcat的目录
bin | 存放Tomcat服务器的可执行文件 |
---|---|
conf | 存放Tomcat服务器的配置文件 |
lib | 存放Tomcat服务器所用的jar包 |
logs | 存放日志 |
temp | 临时文件 |
webapps | 部署的web工程 |
work | Tomcat工作时的目录,用来存放Tomcat运行时jsp翻译为Servlet的源码和Session钝化目录 |
如何启动Tomcat(windows下)
- 找到Tomcat下的bin目录下的startuop.dat,双击启动,linux下的是startup.sh
- 命令行输入:catalina run
测试是否启动成功:
浏览器输入地址:
- http://localhost:8080
- http://127.0.0.1:8080
- http://本机IP:8080
如何关闭:
- 直接关闭Tomcat服务器窗口
- ctrl+c
- 找到Tomcat目录下的bin目录下的shutdown.dat,双击关闭,linux下是shutdown.sh
修改Tomcat的端口号:
找到Tomcat下的conf目录,在server.xml找到Connector标签,修改port,端口范围:1-65535
修改完端口号,需要重启服务器才可以
如何部署web工程到Tomcat中
-
第一种方法:只需把web工程的目录拷贝到Tomcat的Webapps目录下即可
如何访问:只需在浏览器上输入地址:
http://IP:port/工程名/目录/文件名
-
第二种方法:在Tomcat下的conf->Catalina->localhost下新建一个xml文件,代表一个工程
Context表示一个工程上下文
path表示工程的访问路径:即xml文件
docBase表示你的工程目录放在了哪
示例:
手托html文件到浏览器,这时浏览器的地址是:
file:///E:/book/index.html
它使用的是file://协议,file协议表示告诉浏览器
直接读取file:协议后面的路径,解析展示在浏览器使用:http://IP:port/工程名/资源名,所使用的是http协议。背后的原因完全不同
当我们在浏览器中输入地址如下:
http://IP:port/ -----------> 没工程名时,默认访问ROOT工程
idea和Tomcat整合:
Setting—>Application Server 添加 Tomcat Server
新建Java EnterPrise
IDEA中如何创建动态Web工程:
创建new-----moudle----Java Enterprise
目录介绍:
java目录:存放自己编写的java源代码
webapp:存放web工程的资源文件,比如html,js,css等
WEB-INF目录:是一个受服务器保护的目录,浏览器无法直接访问到此目录的内容
web.xml:是整个动态web工程的配置部署描述文件,可以在这些配置很多web工程的组件,比如:Servlet程序,Filter过滤器,Listener监听器…
lib目录:用于存放第三方jar包,和java中导入jar包方式相似
File------>Project Seructure----->±----->java
如何在IDEA中部署工程到Tomcat上运行
- 建议修改web工程对应的Tomcat运行实例名称
- 确认Tomcat实例中有配要部署运行的web工程模块
- server中URL是访问的地址,还可以修改默认的
- 在IDEA中如何运行和停止Tomcat实例
IDEA中Tomcat的几种方式
- Update resource:重新更新web工程的资源到Tomcat运行实例
- Update classes and resource:更新web工程中的class字节码和资源文件到Tomcat运行实例中
- Redeploy:重新部署web模块,但不重启Tomcat实例
- Restart server:重启Tomcat实例,并更新web模块内容
Servlet技术
- Servlet是javaEE规范之一,规范就是接口
- Servlet是javaWeb三大组件之一。三大组件分别是Servlet程序,Filter过滤器,Listener监听器
- Servlet是运行在服务器上的一个java小程序,它可以接收客户机发送来的请求,并响应数据给客户端手动实现Servlet程序
手动实现Servlet程序
- 编写一个类去实现Servlet接口
- 实现Service方法,处理请求,并响应数据
- 到web.xml中去配置Servlet程序的访问地址
HelloServletTest.java
public class HelloServletTest implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* service方法是专门用来处理请求和响应的
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet 被访问了!");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- servlet标签给Tomcat配置Servlet程序-->
<servlet>
<!-- servlet-name标签servlet程序取得一个别名(一般是类名)-->
<servlet-name>HelloServletTest</servlet-name>
<!-- servlet-class是Servlet程序的全类名 -->
<servlet-class>com.example._06servlet.HelloServletTest</servlet-class>
</servlet>
<!-- servlet-mapping标签给servlet程序配置访问地址-->
<servlet-mapping>
<!-- servlet-name标签的作用是告诉服务器,我当前配置的地址给哪个Servlet程序使用-->
<servlet-name>HelloServletTest</servlet-name>
<!-- url-pattern标签配置访问地址<br/>
/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径 <br/>
/ hello 表示地址为:http://ip:port/工程路径/hello <br />
-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
常见的错误:url—pattern中配置的路径没有以斜杠开头:错误信息:hello in servlet mapping
访问时在后面加上/hello,可以访问HelloServletTest文件
http://localhost:8080/test/hello