一、Tomcat Web容器 Web应用服务器
Tomcat 是 Apache 软件基金会一个项目,由 Apache、Sun 和部分公司和个人一起开发完善的轻量级Web 应用服务器,是 Servlet 规范和 JSP 规范的开源实现。是免费开源的。
Tomcat目录说明:
- /bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件、运行文件
- /conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml
- /doc:存放Tomcat文档
- /server:包含三个子目录:classes、lib和webapps
- /server/lib:存放Tomcat服务器所需的各种JAR文件
- /server/webapps:存放Tomcat自带的两个WEB应用admin应用和 manager应用
- /common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件
- /shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)
- /logs:存放Tomcat执行时的日志文件
- /src:存放Tomcat的源代码
- /webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
- /work:存放JSP编译后产生的class文件
默认是8080端口
Tomcat的配置和启动
1、配置文件:server.xml
端口:默认8080
中文问题:URIEncoding="UTF-8"
2、启动tomcat:startup.bat
Tomcat Windows控制台乱码问题:
原因:windows默认编码集为GBK,由于使用startup.bat启动tomcat时,它会读取catalina.bat的代码并打开一个新窗口运行。
打开的cmd默认编码可能不是utf-8,与系统编码不一致,所以导致乱码。
解决:(1)修改conf文件下的logging.properties文件,将控制台输出的编码修改为GBK:
java.util.logging.ConsoleHandler.encoding = GBK
(2)修改windows控制台的编码方式(不建议)
三、在IDEA中创建JavaWeb项目并配置Tomcat
JavaWeb项目的标准项目结构
web项目/module
|--src
| |-基本包名(比如com.gx)
| |-servlet/web/controller 放 servlet
| |-service 放服务层 的接口
| | |-impl 服务接口的实现类
| |-dao/mapper 数据库操作接口
| | |-impl 数据库操作接口的实现类
| |-po/pojo/entity 数据的实体类,一般和数据库的表对应
| |-vo 视图层,业务层之间的数据传递,多表联查
| |-common 放公共的类
| |-filter 过滤器
| |-listener 监听器
| |-util 放工具类
|--web/webapp/webRoot
|-WEB-INF -- 受保护的目录(在浏览器中无法访问该目录的内容)
| |-web.xml JavaWeb项目的核心配置文件
| |-lib 存放项目所需的jar包
|-static/css/js/image 静态资源目录
|-jsp 存放jsp文件
|-*.jsp jsp文件
配置Tomcat
目的:1-运行JavaWeb项目
2-引入Tomcat中JavaWeb相关的jar依赖
二、Servlet
类似于MVC模式中的Controller作用
Servlet是sun公司提供的一门用于开发动态web资源的技术。
Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),
按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java类,称之为Servlet
(一)、创建和配置
* 1、项目配置Tomcat的运行环境
* 2、检查项目是否已经添加Tomcat的依赖,如果没有手动添加
* 3、创建一个普通类,继承HttpServlet
* 4、在web.xml配置Servlet
(二)、中文乱码(控制台,部分JS文件中文乱码)
配置Tomcat的VM Opthions参数。添加 -Dfile.encoding=UTF-8
(三)、获取参数--从请求Request中获取用户输入的参数
String getParameter(String name)
该方法用于获取某个指定名称的参数值。
如果请求消息中没有包含指定名称的参数,则 getParameter() 方法返回 null。
如果指定名称的参数存在但没有设置值,则返回一个空串。
如果请求消息中包含多个该指定名称的参数,则 getParameter() 方法返回第一个出现的参数值。
String [] getParameterValues (String name)
HTTP 请求消息中可以有多个相同名称的参数(通常由一个包含多个同名的字段元素的 form 表单生成),
如果要获得 HTTP 请求消息中的同一个参数名所对应的所有参数值,
那么就应该使用 getParameterValues() 方法,该方法用于返回一个 String 类型的数组。
Enumeration getParameterNames()
方法用于返回一个包含请求消息中所有参数名的 Enumeration 对象,在此基础上,可以对请求消息中的所有参数进行遍历处理。
Map getParameterMap()
用于将请求消息中的所有参数名和值装入一个 Map 对象中返回。