Tomcat下使用jsp的基础

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

  • 停止Tomcat

    • binshutdown.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安装目录
    • 打开confserver.xml
    • 找到端口位置
    • 在端口设置 '/>' 前面添加 useBodyEncodingForURI="true"

在请求中存取属性

  • 在请求中保存属性
public void setAttribute(String name, Object o)

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

转发与重定向

  • 转发

    • RequestDispatcher对象
    • forward()方法

语法

1. request.getRequestDispatcher("url").forward(request,response)
2. <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>
Last modification:December 15th, 2017 at 12:04 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment