tomcat的安装
网址:https://tomcat.apache.org/
1.了解tomcat解压后的目录结构
bin:可执行文件
conf:配置文件
lib:tomcat依赖的jar文佳
logs:日志文件
temp:临时文件
webapps:可执行的项目(之后开发的项目存放处),默认访问目录下的ROOT项目。
work:存放有jsp翻译成的java,Java编译的class文件
2.配置tomcat环境变量
注意:配置tomcat环境变量之前需要提前配置Java的环境变量。
windows:右键此电脑 ->
在此添加 CATALINA_HOME
变量,变量值为tomcat安装目录
使用浏览器打开:localhost:8080
,出现如下图,即配置成功!
3.修改默认端口
图中的 port
属性值就是默认端口,修改属性值重启tomcat服务,就可以了(我将它修改成了8848,这样可以使用 localhost:8848 访问tomcat了)。
4.常见浏览器状态码
200:正常
404:资源无法访问
500:代码存在错误
5.tomcat项目结构
CSS:css样式文件夹
images:图片文件夹
WEB-INF:配置文件夹
index.jsp:主页面
WEB-INF目录结构:
classes:class文件夹
lib:存放项目依赖jar包
jsp:存放部分jsp文件
web:配置文件
6.修改默认主页
在tomcat项目的 WEB-INF
文件夹内的web.xml配置文件修中添加如下代码:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.xhtml</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
修改welcome-flie
标签中的值即可。
7.虚拟路径配置
a.配置server.xml文佳
在Host标签内添加
<Context docBase="" path="" />
path:虚拟路径(绝对路径 or 相对路径[相对于webapps文件夹])
appBase:实际路径
例如:
<Context docBase="C:\Apps\myProject" path="/myProject" />
添加成功后需要重启tomcat服务
b. 在Catalina文件夹内创建与项目对应的配置文件(无需重启)
在新建的 项目名.xml 中写入
<Context docBase="" path="" />
8.tomcat执行流程
第一次访问tomcat服务器:tomcat将jsp翻译成Java文件,再编译成class文件,所以第一次访问会相对而言慢些。
第二次访问tomcat服务器:直接访问class文件(当服务端修改文件时,需要重新翻译、编译)
9.在eclipse中配置tomcat
第一步:
选择对应版本
Browse 选择安装路径,JRE选择对应版本,或者使用网络下载新的。
第二步:
在控制面板添加tomcat服务
注意如果创建的jsp文件第一行报错,则需要导入tomcat所需的jer包
10.创建web项目
11.统一字符集编码
编码分类:
- 设置jsp文件的编码(jsp文件中page标签中的pageEncoding属性)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
- 设置浏览器读取jsp文件的编码(html中meta标记的charset属性)
<meta charset="UTF-8">
- jsp文件的文件编码
单独文件设置:
单独项目设置:
全局设置(推荐):
注意:此设置只有之后的JSP文件生效
12.给项目添加tomcat所需的jar包
目的:在初次使用eclipse编写jsp文件,第一行报错。
JSP
1.jsp的页面元素
a.java代码
<%
局部变量,java语句[java程序片]
%>
<%!
全局变量,定义方法[java变量,方法]
%>
<%=输出表达式[不需要分号结尾]%>
注意:一般情况下,修改jsp文件不用重启tomcat服务,修改tomcat配置文件则需要。
b.指令
<%@ page%>
属性:
language:说明jsp页面使用的脚本语言
import:导入类
pageEncoding:jsp文件自身的编码
contentType:浏览器解析的编码
charset:和contentType相似
c.注释
html注释:
Java注释:// or /* */
jsp注释:<%-- --%>
2.jsp内置对象[全局对象 类似于Object]
out
概述:输出对象,向客户端输出内容
request
概述:请求对象;存储客户端向服务器请求的信息。
request常用方法[函数]:
String getParameter(String name):根据请求的key值,返回字段值value
String[] getParameterValues(String[] name):根据请求的key值,返回字段值多个value,一般用于HTML表单中的复选框
注意:getParameter getParameterValues都是通过input标签中name属性值拿value值。
注意:getParameter getParameterValues都是通过input标签中name属性值拿value值。
void setCharacterEncoding(“编码格式[utf-8]”):设置post请求编码
getRequestDispatcher(“转发地址”).forward(request,response):请求转发
ServletContext getSeverContext():获取项目的ServletContext对象。
response
概述:响应对象
常用方法:
void addCookie(Cookie cookie):服务器向客户端增加cookie对象
void sendRedirect(String location) throws IOException:页面跳转的一种方式(重定向)
void setContentType(String type):设置服务端响应的编码
请求转发和重定向的区别:
请求转发保留提交的数据,地址栏不变。请求次数为1,跳转位置在服务端。
重定向不可保留提交的数据,但是地址栏会变。请求次数为2,跳转位置在客户端。
编码问题
如果出现编码错乱时:
a.可以通过转换编码解决
String name;
name = request.getParameter("name");//获取name
name = new String(name.getBytes("ios-8859-1"),"utf-8")//将ios-8859-1编码的name转换为utf-8编码
b.修改server.xml文件,在端口修改的那个标签添加URIEncoding="UTF-8"
即可。
pageContext
概述:JSP页面容器
Cookie
概述:Cookie对象是由服务端生成的,在发送给客户端常用于存储账号等等信息(类似与window.sessionStorage、window.localStorage效果类似,不过这两个是本地自己生成的。)
Cookie以键值对的方式存在,name 和 value。
通过javax.servlet.http.Cookie导入包
构造方法:public Cookie(String name,String value)
String getName();获取name值
String getValue();获取value值
void setMaxAge();设置最大有效期,单位秒
创建Cookie对象:通过new Cookie(),构造方法赋值
添加Cookie对象:通过response.addCookie(Cookie cookie)
发送Cookie对象:通过转发、重定向的形式响应发送给客户端
获取Cookie对象:通过request.getCookies(),只能一次性获取所有Cookie对象
session
概述:会话对象
运行机制:在客户端第一次发送请求给服务端,服务端就(匹配sessionid,没有匹配成功,则说明客户端是第一登录,需要创建session对象)会创建一个这个客户端的session对象,这个session对象创建是会创建一个ID用于区分和保存一些客户端的信息,当服务端响应客户端时,将session对象ID以Cookie对象形式发送给客户端(name为JSESSIONID)
第二次(n次)请求服务器时:服务器会先用客户端的Cookie中的JSESSIONID,匹配服务器的sessionid,成功则说明客户端之前登过。
机制:
a.session存储在服务端
b.session是在同一用户(客户端)共享
c.实现机制:第一次访问时,服务端生成一个session对象,将session对象的id以cookie的形式发送给客户端,用于之后的识别。
常用方法:
String getId();获取sessionid
boolean isNew();判断是否为第一次访问
void invalidate();使session失效,一般用于用户注销登录时,注销服务端的session对象。
void setAttribute(key,value);添加属性
Object getAttribute(key);添加属性,返回值可能是Object数据,需要转型。
String name = session.getAttribute("uname").toString();
removeAttribute(String name);删除属性
void setMaxInactiveInterval();设置最大有效 非活动时间,单位秒
int getMaxInactiveInterval();获取最大有效 非活动时间,单位秒
session 和 cookie的区别
名称 | 存储位置 | 相比较 | 返回值对象类型 |
---|---|---|---|
cookie | 客户端 | 不安全 | String |
session | 服务端 | 安全 | Object |
作用域
session:同一次会话共享
applicaton
概述:应用程序对象
String getContextPath();获取虚拟路径
String getRealPath(String name);获取指定虚拟路径的绝对【真实】路径(相对路劲 or 绝对路径)
<%=application.getContextPath() %><br/>//获取当前页面的虚拟路径
<%=application.getRealPath("/my_jsp_tomcat") %>//获取指定虚拟路径对应的绝对路径
config
概述:配置对象
out
概述:输出对象
page
概述:当前JSP页面对象(相当于java中的this)
exception
概述:异常对象
四种范围对象
pageContext JSP页面对象(pege) 当前页面有效
request请求对象 同一次请求有效(重定向之后无效)
session会话对象(请求转发,重定向之后都有效,注销、关闭浏览器或者切换浏览器不无效)同一次对话有效
appliation全局对象 全局有效(整个项目有效,关闭服务器,切换其他项目则无效)
以上四种对象共有方法:
Object getAttribute(String name);根据属性名,获取属性值
void setAttribute(String name,Object obj);设置属性值(新增,修改)
void removeAttribute(String name);根据属性名,删除属性对象
注意:实现同功能,可以使用小范围则使用小范围,性能损耗更小
JDBC
JDBC:java database connectivity,可以为多种关系型数据库DBMS 提供统一的访问方式,用java来操作数据库
常见问题
a.如何操作JDBC
通过JDBC API操作(接口、方法、类):提供各种操作访问接口,Connection Statement PreparedStatement ResultSet
b.JDBC DriverManager:管理不同的数据库驱动
c.各种数据库驱动是由数据库厂商提供
操作流程
大致:
- 与数据库建立连接
- 发送SQL语句
- 返回处理结果
详细:
- 导入驱动(将jar包复制到项目),加载具体的驱动类
import java.sql.*;
public class jdbc {
private static final String URL = "jdbc:oracle:thin:@localhost:1521:Orcl";//链接字符串
private static final String USERNAME = "soctt";//用户名
private static final String PWD = "tiger";//密码
public static int updata(String sql){
Connection connect = null;
Statement st = null;
try{
Class.forName("oracle.jdbc.OracleDriver.class");//加载驱动类
connect = DriverManager.getConnection(URL,USERNAME,PWD);//与数据库建立连接
st = connect.createStatement();//通过连接对象获取操作对象
int count = st.executeUpdate(sql);//执行sql代码
return count;//返回值
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}finally {
//关闭资源
try {
if(st != null)st.close();
if(connect != null)connect.close();
}catch (SQLException e) {
e.printStackTrace();
}
}
return 0;//默认返回值
}
}
驱动类位置:
oracle:oracle.jdbc.OracleDriver
mysql:com.mysql.jdbc.Driver
sqlServer:com.microsoft.sqlserver.jdbc.SQLServerDriver
连接字符串:
oracle:jdbc:oracle:thin:@localhost:1521:Orcl
mysql:jdbc:mysql://localhost:3306/数据库实例名
sqlServer:jdbc:microsoft:sqlserver:localhost:1433;databasename=数据库实例名
- 与数据库建立连接
- 发送sql语句,执行
- 处理结果
常见接口
DriverManager:管理jdbc驱动
Connection:连接
Statement(PreparedStatement):增删改查
CallableStatement:调用数据库中的/存储过程/存储函数
Result:结果集