Tomcat的目录结构

  • /bin — 存放各种平台下用于启动和停止Tomcat的脚本文件
  • /conf — 存放Tomcat服务器的各种配置文件
  • /lib — 存放Tomcat服务器所需的各种JAR文件
  • /logs — 存放Tomcat的日志文件
  • /temp — Tomcat运行时用于存放临时文件
  • /webapps — 当发布Web应用时,默认情况下回将Web应用的文件存放于此目录中
  • /work — Tomcat把JSP生成的Servlet防御此目录下

配置Tomcat端口

  • 默认端口 8080
  • 通过配置文件 server.xml 修改 Tomcat 端口号
<Connector port = "8080" // 端口号
protocol = "HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>

启用Tomcat

  • 启用Tomcat
  • bin\startup.bat
  • 访问 http://localhost:8080查看Tomcat主页
  • 停止Tomcat
  • bin\shutdown.bat
  • 部署静态网站

部署Web应用程序

  • 生成War包
  • 直接拷贝Web跟目录下所有文件

JSP(java server pages)

  • 运行在服务器端的Java页面
  • 使用HTML嵌套Java代码实现

jsp执行过程

  1. 翻译**_jsp.java
  2. 编译**_jsp.class
  3. 执行

Web程序常见错误

  • 404错误—找不到访问的页面或资源
  • 运行时,url输入错误
  • 将页面放在WEB-INF下
  • 外部启动Tomcat,未部署项目
  • 500错误—JSP页面代码错误
  • JSP页面代码错误
  • 页面无法显示
  • Tomcat没有启动

获取表单提交数据

  • 请求对象:request
  • public String getParameter (String name)
<input type="text" name="userName">
String userName = request.getParameter("userName");

get与post区别

  • get参数出现在URL中,有长度先限制,安全性低,URL可传播
  • post参数不会出现在URL中,无长度限制,安全性高,URL不可传播

获取同名的多个参数

String[] maillds = request.getParameterValues("mailld");

if(maillds!=null && maillds.length!=0){
// 循环访问的(name=mailds)表单提交数据

}

request对象常用方法

  • String getParameter(String name)– 根据表单组件名称获取提交数据
  • String[] getParameterValues(String name)–获取表单组件对应多个值得请求数据
  • void setCharacterEncoding(String charset)–指定每个请求的代码
  • RequestDispatcher getRequestDispatcher(String path)–返回一个RequestDispatcher对象,该对象的forward()方法用于转发请求

内置对象 (重要)

  • JSP已经准备好的,可以直接使用的对象
  • 请求对象:request
  • 输出对象:out
  • 响应对象:response
  • 应用程序对象:application
  • 回话对象:session
  • 页面上下文对象:pageContext
  • 页面对象:page
  • 配置对象:config
  • 异常对象:exception

设置编码格式

  • post 设置字符集
  • post 设置请求编码格式
  • request.setCharacterEncoding(“UTF-8”);
  • post 设置响应编码格式
  • response.setCharacterEncoding(“UTF-8”);
  • 如果没有配置tomcat则需要做下列操作
  • <%@ page language=”java” contentType=”text/html; charset=utf-8″ %>
  • GET提交方式下面编码问题
  • 找到tomcat安装目录
  • 打开\conf\server.xml
  • 找到端口位置
  • 在端口设置 ‘/>’ 前面添加 useBodyEncodingForURI=”true”

在请求中存取属性

  • 在请求中保存属性
public void setAttribute(String name, Object o)
request.setAttribute("mess","注册失败");
  • 在属性中获取属性
public Object getAttribute(String name)
  • 注意
  1. 在使用属性值的时候要做非空判断,否则会出现空指针异常
  2. 它的返回值类型是Object类型,需要做数据类型的转换

转发与重定向

  • 转发
  • RequestDispatcher对象
  • forward()方法

语法

request.getRequestDispatcher("url").forward(request,response)
<jsp:forward page="url" />
  • 重定向
  • 将用户请求重新定位到一个新的URL

语法

response.sendRedirect("url")

转发与重定向的区别

  • 转发URL不会发生变化,不会重新向服务器发送请求,会携带请求,目标URL仅本Web应用
  • 重定向URL会发生变化,会重新向服务器发送请求,不会携带请求,目标URL为任意URL
  • 重定向是客户端行为,转发的服务器行为

使用session保存用户名

  • 使用会话对象session实现
  • 一个会话就是浏览器与服务器之间的一次通话
  • 会话可以在多次请求中保存和使用数据
public void setAttribute(String name, Object value);
// 用法:session.setAttribute("userName", "张三丰");
public Object getAttribute(String name);
// 用法:String userName = (String)session.getAttribute("userName");

session的工作方式

  • 每个session都有一个唯一的sessionid
  • sessiongetId();
  • public String getid();
  • 会话的清除和过期
  • 程序主动清除session数据
  • 设置会话失效:session.invalidate();
  • 移除会话的一个属性
public void removeAttribute(String name);
// 用法:session.removeAttribute("userName")
  • 服务器主动清除长时间没有再次发送请求的session
  • 设置会话的过期时间
// 方法一
public void setMaxinactiveInterval(int interval); // 这边的单位指interval秒
// 方法二
// 在web.xml下面配置
<session-config>
<session-timeout>30</session-timeout>// 这边的单位指30分钟
</session-config>