tomcat解压目录
- bin:可执行文件(startup.bat shutdown.bat)
- conf:配置文件(server.xml)
- lib:Tomcat依赖的jar文件
- log:日志文件(记录出错等信息)
- temp:临时文件
- webapps:可执行的项目(开发的项目,放入该目录)
- work:存放由jsp翻译成的java,以及编译成的class文件
配置tomcat
- tomcat依赖java,必须配置JAVA_HOME
- 配置CATALINA_HOME(tomcat根目录)
- 每个项目都有WEB-INF文件夹 (WEB_INF里有classes文件夹、lib文件夹、web.xml)
- 配置虚拟路径 Host标签添加Context标签
<Context docBase="" path=“”>
(docBase实际路径 path 虚拟路径 ) - 配置虚拟路径 也可在conf/Catalina/localhost 中新建”项目名.xml”中新增一行
<Context docBase="" path=“”>
- 虚拟主机
jsp执行流程
第一次
jsp -> java -> class(生成的java和class在work/Catalina/localhost(Host)/项目名/org/apcahe/jsp文件夹里)
第二次
直接访问class文件
jsp页面元素
脚本Scriptlet
<%
局部变量java语句
%>
<%!
全局变量
%>
//输出表达式
<%=%>注释
指令
- page 网页开头指定页面属性
- language
- import 导入类
- pageEncoding:jsp 文件自身编码
- contentType:浏览器解析jsp编码
- include
- taglib
- page 网页开头指定页面属性
jsp9大内置对象
- out: 向客户端输出
- pageContext:
- request:请求对象,存储客户端向服务端发送的请求信息
- String request.getParameter(string name) 获取请求参数
- String[] request.getParameterValues(string name) 获取数组参数
- void request.setCharacterencoding(string code) 设置编码
- request.getServerletContext() 获取serverletcontext对象
- request.getRequestDispatcher(“yemian”).forward(request,response) 请求转发
- request.getcookies()
- response: 相应对象
- void response.addCookie(Cookie cookie) 服务端向客户端添加cookie
- void sendRedirect(String location) 重定向 页面跳转 重定向 数据丢失
- void setContenType(String type) 设置服务端相应编码
- session: 会话 开始->关闭 是一次会话,客户端第一次请求服务端时,服务端会产生一个session对象,用于保存信息,并且每个session对象,都会有一个唯一的sessionId(用于区分其他session),服务端也会生成一个cookie,并且该cookie的name=JESSSIONID,value=服务端sessionId,然后 服务端会在 相应客户端的同事 将该cookie发送给客户端,至此,客户端就有了一个cookie(JSESSIONID),因此,客户端的cookie就可以和服务端的session一一对应
- application: 全局对象
- application.getContextpath() 获取虚拟路径
- application.getRealPath() 绝对路径(虚拟路径对应的绝对路径)
- config
- page
- exception
JDBC
JDBC API:提供各种操作访问接口 Connection Statement PrepareStatament ResultSet
- DriverManager:连接
- Connection:连接
- Statement(PrepareStatament): 增删改查
- CallableStatement:调用函数或存储过程
- Result:返回结果
数据库驱动
- Oracle ojdbc-x.jar oracle.jdbc.OracleDriver
- Mysql mysql-connector-java-x.jar com.mysql.jdbc.Driver
- SqlServer sqljdbc-x.jar com.microsoft.sqlserver.jdbc.SQLServerDriver
// 导入驱动类 |
PrepareStatement操作
sql:”select * from xxx where id=?”
PrepareStatement.setString(1,”01”);
赋值操作setXXX(int index,XXX); 占位符
PrepareStatement与Statement区别
函数或存储过程
参数格式:
- 存储过程 无返回值 有Out参数代替 {call 存储过程名(参数列表)}
- 存储函数 有返回值 {call 村塾函数名(参数列表)}
// 导入驱动类
Class.forName("驱动类");
// 与数据库建立连接
Connectio connection = DriverManager.getConnectioin(url,user,password);
CallableStatement csmt = connection.prepareCall("{call 存储过程名(参数列表)}");
csmt.execute()
处理CLOB[text]/BLOB类型
- CLOB: 大文本数据
- BLOB: 二进制
- 存放路径
Serverlet
serverlet2.5
- extend Httpservelet
- @Overide doGet(HttpRequest request,HttpResponse response)
- @Overide doPost(HttpRequest request,HttpResponse response)
- 配置web.xml
<Serverlet>
<serverlet-name>a</serverlet-name>
<server-class>com.xx.xxx</serverlet-class>
</Serverlet>
<Serverlet-mapping>
<serverlet-name>a</serverlet-name>
<serverlet-url>/xxx</serverlet-url>
</Serverlet-mapping>
serverlet3.0
- extend Httpservelet
- @Overide doGet(HttpRequest request,HttpResponse response)
- @Overide doPost(HttpRequest request,HttpResponse response)
- 在类上添加注解@WebServerlet(value=”/xxxx”)
serverlet生命周期
- 加载(容器自动处理)
- 初始化 init() 只运行一次
- 服务(doget,dopost)
- 销毁 destory() 关闭容器时运行,只运行一次
- 卸载
getinitParameter(String name)
serverlet (super.getinitParameter(“xxxxx”))
- 3.0 @WebServerlet(value=”xxx”,initParams={@WebInitParam()})
- 2.5
<Serverlet>
<serverlet-name>a</serverlet-name>
<server-class>com.xx.xxx</serverlet-class>
<init-param>
<param-name>serverletparamname</param-name>
<param-value>value</param-value>
</init-param>
</Serverlet>
<Serverlet-mapping>
<serverlet-name>a</serverlet-name>
<serverlet-url>/xxx</serverlet-url>
</Serverlet-mapping>
容器的值 (super.getServerletContenttext().getinitParameter(name=”xxxx”,value=”xxxx”))
<context-param>
<param-name>globalamname</param-name>
<param-value>globalvalue</param-value>
</context-param>
文件上传
- commons-fifleupload.jar
- commons-io.jar
El表达式
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
- Page -> PageScope
- Request -> RequestScope
- Session -> SessionScope
- Application -> ApplicationScope
jstl
- 引入两个jar包 jstl.jar,standard.jar
- 引入taglib <%@ taglib uri=””,prefix=”c”%>
- 通用标签库
- <c:set var=””, value=””, scope=””> 给某个变量赋值(scope:request,session,application) 相当于request.setAttribute()
- <c:out>
- 条件标签库
- <c:if test=”” var=”result”> result是结果 true false
- <c:choose><c:when test=””></c:when><c:otherwise></c:otherwise></c:choose>
- 迭代标签库
- <c:forEach begin=”” end=”” step=”” varStatus=”status”>${status.index}</c:forEach>
- <c:forEach var=”students” items=”student”></c:forEach>
过滤器
- implements Filter(javax.serverlet.Filter)
- 重写init(),doFilter(),destory()
system.out.print("请求拦截");
chain.dofilter(request,response)
system.out.print("响应拦截");
- 配置web.xml
<filter>
<filter-name>xxxx</filter-name>
<filter-class>XXX</filter-class>
</filter>
<filter-mapping>
<filter-name>xxxx</filter-name>
<url-pattern>xxxx</url-pattern>
</filter-mapping>
监听器
- implements ServerletRequestListener,HttpSessionLister,SeverletContextListener
- implements ServerletRequestAttributeListener, HttpSessionAttributeListener,SeverletContextAttributeListener 监听属性更改
- 重写(监听开始结束)
- 配置web.xml
<listener>
<listener-class>xxxxx</listener-class>
</listener>