目录

  • web项目
  • Java Web概述
  • web资源的分类
  • 常用的web服务器
  • Tomcat
  • 下载
  • 目录介绍
  • 启动
  • 启动方式一
  • 启动方式二
  • 关闭
  • 端口号的修改
  • 部署 web 工程到 Tomcat 中
  • 部署方法
  • 方法一
  • 方法二
  • 本地访问和协议访问的区别
  • ROOT的工程的访问及默认index.html页面的访问
  • 使用 idea 开发 web
  • idea整合tomcat服务器
  • idea中创建web工程
  • web 工程目录介绍
  • web 工程添加 jar包
  • idea中部署工程至Tomcat中
  • idea中启动、停止 Tomcat 实例
  • 启动 Tomcat 实例
  • 停止 Tomcat 实例
  • 重启 Tomcat 实例
  • 修改工程访问路径
  • 修改运行的端口号
  • 修改运行使用的浏览器
  • 配置热部署
  • Servlet、过滤器、监听器
  • Servlet
  • HttpServletRequest
  • 存储自定义属性
  • 转发
  • HttpServletResponse
  • 重定向
  • 转发与重定向的区别
  • ServletConfig
  • ServletContext
  • Cookie
  • Session
  • case
  • HttpSession的有效期设置
  • 登录、退出案例
  • 过滤器
  • 过滤器的应用
  • 监听器
  • 使用监听器统计在线人数
  • ServletContextListener接口
  • 使用Servlet实现新闻增加
  • JSP
  • JSP简介
  • case
  • JSP语法
  • 脚本
  • 标签、指令
  • 内置对象
  • 表单与request对象## 中文乱码
  • 页面间的数据传递
  • 使用JSP保存数据
  • EL表达式
  • EL运算符
  • JSTL
  • 内置函数
  • fn
  • 标签
  • c:out
  • c:set
  • c:if
  • c:choose
  • c:foreach
  • case1
  • case2
  • c:remove
  • c:import
  • c:redirect
  • c:forTokes
  • c:catch
  • JDBC
  • JDBC概述
  • 设置配置文件
  • PreparedStatement概述
  • 使用通用类优化数据库操作
  • 数据源与连接池


web项目

C/S(client server)架构

B/S(client server)架构 browser server

java使用poi给ppt添加水印 javaweb ppt_java使用poi给ppt添加水印

Java Web概述

Java Web是指所有通过 Java 语言编写,可以通过浏览器访问的程序的总称。

JavaWeb是基于请求和响应来开发的。

请求(request)是指客户端给服务器发送数据。
响应(response)是指服务器给客户端回传数据。

请求和响应是成对出现的,有请求就有响应。

java使用poi给ppt添加水印 javaweb ppt_后端_02

web资源的分类

web 资源按实现的技术和呈现的效果的不同,分为静态资源和动态资源两种。
静态资源:html、css、js、txt、jpg 图片、mp4 视频 ,
动态资源:jsp 页面、Servlet 程序

常用的web服务器

tomcat:由 Apache 组织提供的一种 Web 服务器,提供对 JSP 和 Servlet 的支持。它是一种轻量级的 Java Web 容器(服务器),也是当前应用最广的 Java Web 服务器(免费)。

Jboss:是一个遵从 JavaEE 规范的、开放源代码的、纯 Java 的 EJB 服务器,它支持所有的 JavaEE 规范(免费)。

GlassFish:由 Oracle 公司开发的一款 Java Web 服务器,是一款强健的商业服务器,达到产品级质量(应用很少)。

Resin:是 CAUCHO 公司的产品,是一个非常流行的服务器,对 Servlet 和 JSP 提供了良好的支持,性能也比较优良,resin 自身采用Java 语言开发(收费,应用比较多)。

WebLogic:是 Oracle 公司的产品,是目前应用最广泛的 Web 服务器,支持 JavaEE 规范,而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多,适合大公司)。

Tomcat

下载

登录官网地址:https://www.apache.org

java使用poi给ppt添加水印 javaweb ppt_ide_03


点击“Tomcat”

java使用poi给ppt添加水印 javaweb ppt_ide_04


选择对应版本点击

java使用poi给ppt添加水印 javaweb ppt_ide_05


选择要下载的类型

java使用poi给ppt添加水印 javaweb ppt_java使用poi给ppt添加水印_06


下载完成后直接解压即可。

目录介绍

bin 存放 Tomcat 服务器的可执行程序
conf 存放 Tocmat 服务器的配置文件
lib 存放 Tomcat 服务器的 jar 包
logs 存放 Tomcat 服务器运行时输出的日记信息
temp 存放 Tomcat 运行时产生的临时数据
webapps 存放部署的 Web 工程。
work

启动

启动方式一

找到 Tomcat 目录下的 bin 目录下的 startup.bat

测试 Tomcat 服务器启动成功:打开浏览器,在浏览器地址栏中输入以下地址测试:
1、http://localhost:8080 2、http://127.0.0.1:8080 3、http://真实 ip:8080

当出现如下界面,说明 Tomcat 服务器启动成功。

java使用poi给ppt添加水印 javaweb ppt_后端_07


常见的启动失败的情况:双击 startup.bat 文件,会出现一个小黑窗口一闪而过。原因基本上都是因为没有配置好 JAVA_HOME 环境变量。

配置JAVA_HOME环境变量
一:JAVA_HOME 必须全大写。
二:JAVA_HOME 中间必须是下划线,不是减号-
三:JAVA_HOME 配置的路径只需要配置到 JDK 的安装目录即可。不需要带上 bin 目录。

启动方式二

1、打开命令行

2、cd 到 Tomcat 的 bin 目录下

java使用poi给ppt添加水印 javaweb ppt_后端_08


3、敲入启动命令:

startup.bat

catalina run

关闭

方式一:点击 tomcat 服务器窗口的 “x” 关闭按钮
方式二:把 Tomcat 服务器窗口置为当前窗口,然后按快捷键 Ctrl+C
方式三:双击 Tomcat 的 bin 目录下的 shutdown.bat

端口号的修改

MySQL 默认的端口号是:3306
Tomcat 默认的端口号是:8080

找到 Tomcat 目录下的 conf 目录,找到 server.xml 配置文件。

java使用poi给ppt添加水印 javaweb ppt_后端_09


平时上百度:http://www.baidu.com:80

HTTP 协议默认的端口号是:80

部署 web 工程到 Tomcat 中

部署方法

方法一

把 web 工程的目录拷贝到 Tomcat 的 webapps 目录下即可。

访问 Tomcat 下的 web 工程:只需要在浏览器中输入访问地址,格式如下:
http://ip:port/工程名/目录下/文件名

方法二

找到 Tomcat 下的 conf 目录\Catalina\localhost\ 下,创建如下的配置文件:

abc.xml 配置文件内容如下:

java使用poi给ppt添加水印 javaweb ppt_java_10


Context 表示一个工程上下文

path 表示工程的访问路径:/abc

docBase 表示你的工程目录在哪里

<Context path=“/abc” docBase=“E:\book” />

访问这个工程的路径如下:http://ip:port/abc/ 就表示访问 E:\book 目录.

本地访问和协议访问的区别

手拖 html 页面到浏览器和在浏览器中输入http://ip:端口号/工程名/的区别

手托 html 页面的原理:

java使用poi给ppt添加水印 javaweb ppt_java使用poi给ppt添加水印_11


输入访问地址访问的原因:

java使用poi给ppt添加水印 javaweb ppt_java_12

ROOT的工程的访问及默认index.html页面的访问

在浏览器地址栏中输入访问地址如下:
http://ip:port/ 没有工程名的时候,默认访问的是 ROOT 工程。

当我们在浏览器地址栏中输入的访问地址如下:
http://ip:port/工程名/ 没有资源名,默认访问 index.html 页面

使用 idea 开发 web

idea整合tomcat服务器

操作的菜单如下:File->Settings->Build, Execution, Deployment->Application Servers

java使用poi给ppt添加水印 javaweb ppt_后端_13


创建模块时,会自动加载已经配置的Tomcat。

java使用poi给ppt添加水印 javaweb ppt_java使用poi给ppt添加水印_14

idea中创建web工程

File->New->Module

java使用poi给ppt添加水印 javaweb ppt_ide_15


选择“Java Enterprise”

java使用poi给ppt添加水印 javaweb ppt_java_16


点击“Next”

java使用poi给ppt添加水印 javaweb ppt_后端_17


点击“Finish”

java使用poi给ppt添加水印 javaweb ppt_服务器_18

web 工程目录介绍

java使用poi给ppt添加水印 javaweb ppt_java_19

web 工程添加 jar包

java使用poi给ppt添加水印 javaweb ppt_服务器_20


java使用poi给ppt添加水印 javaweb ppt_服务器_21

idea中部署工程至Tomcat中

建议修改 web 工程对应的 Tomcat 运行实例名称

java使用poi给ppt添加水印 javaweb ppt_java使用poi给ppt添加水印_22


确认 Tomcat 实例中有要部署运行的 web 工程模块

java使用poi给ppt添加水印 javaweb ppt_服务器_23


还可以修改 Tomcat 实例启动后默认的访问地址:

java使用poi给ppt添加水印 javaweb ppt_服务器_24

idea中启动、停止 Tomcat 实例

启动 Tomcat 实例

java使用poi给ppt添加水印 javaweb ppt_后端_25

停止 Tomcat 实例

java使用poi给ppt添加水印 javaweb ppt_服务器_26

重启 Tomcat 实例

java使用poi给ppt添加水印 javaweb ppt_ide_27

修改工程访问路径

java使用poi给ppt添加水印 javaweb ppt_服务器_28

修改运行的端口号

java使用poi给ppt添加水印 javaweb ppt_后端_29

修改运行使用的浏览器

java使用poi给ppt添加水印 javaweb ppt_后端_30

配置热部署

java使用poi给ppt添加水印 javaweb ppt_java_31

Servlet、过滤器、监听器

Servlet

HttpServletRequest

public interface HttpServletRequest
extends ServletRequest

请求对象。

javax.servlet
Interface ServletRequest

All Known Subinterfaces:
HttpServletRequest

int getRemotePort()

String getContextPath()
String getRemoteAddr() 在ServletRequest接口中。
StringBuffer getRequestURL()
String getRequestURI()

Enumeration getHeaderNames()
String getHeader(String name)

Cookie[] getCookies()
HttpSession getSession()

String getMethod()

String getParameter(String name) 在ServletRequest接口中。
String[] getParameterValues(String name)

乱码解决:
void setCharacterEncoding(String env) throws UnsupportedEncodingException

存储自定义属性

void setAttribute(String name, Object o) 在ServletRequest接口中。
Object getAttribute(String name) 在ServletRequest接口中。
void removeAttribute(String name)

转发
package com.oracle.one.servlet.simple;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/simple/three")
public class TestServletDispatcher00002 extends HttpServlet{

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		
		httpServletRequest.setCharacterEncoding("utf-8");
	
		httpServletRequest.setAttribute("name", "宋江");
		httpServletRequest.setAttribute("gender", "男");
		
		/*
		 * 转发不会改变浏览器地址栏中的显示内容。
		 * 转发属于项目内的跳转。
		 * */
		String uri = "/simple/fourth";
		RequestDispatcher requestDispatcher = httpServletRequest.getRequestDispatcher(uri);
		
		requestDispatcher.forward(httpServletRequest, httpServletResponse);
		
		//简化写法
		//httpServletRequest.getRequestDispatcher(uri).forward(httpServletRequest, httpServletResponse);
		
	}

	@Override
	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doPost(httpServletRequest, httpServletResponse);
	}
	
}
package com.oracle.one.servlet.simple;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/simple/fourth")
public class TestServletDispatcher00003 extends HttpServlet{

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		
		httpServletRequest.setCharacterEncoding("utf-8");
		
		System.out.println("转发到了这里。");
		
		String name = (String)httpServletRequest.getAttribute("name");
		String gender = (String)httpServletRequest.getAttribute("gender");
		
		System.out.println("姓名:" + name);
		System.out.println("性别:" + gender);
		
	}

	@Override
	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {	
		doGet(httpServletRequest, httpServletResponse);
	}
	
}

HttpServletResponse

javax.servlet.http
Interface HttpServletResponse

All Superinterfaces:
ServletResponse

响应对象

PrintWriter getWriter() throws IOException 在ServletResponse接口中
ServletOutputStream getOutputStream() throws IOException

package com.oracle.one.servlet.simple.http_servlet.response;

import java.io.IOException;
//import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "TestHttpServletResponse00000", urlPatterns = { "/http_servelt_response/one" })
public class TestServlet00000 extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		
		httpServletRequest.setCharacterEncoding("utf-8");
		httpServletResponse.setContentType("text/html;charset=utf-8");
		
		/*PrintWriter printWriter = httpServletResponse.getWriter();
		printWriter.write("这是HttpServletResponse响应对象输出的文本内容。");
		//printWriter.write("<h1>这是HttpServletResponse响应对象输出的文本内容。</h1>");
		printWriter.flush();
		printWriter.close();*/
		
		ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
		servletOutputStream.write("哈哈哈".getBytes());
		servletOutputStream.flush();
		servletOutputStream.close();
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}
重定向

void sendRedirect(String location) throws IOException

package com.oracle.one.servlet.simple.http_servlet.response;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "TestServlet00001", urlPatterns = { "/simple/servlet_response/two" })
public class TestServlet00001 extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		
		//重定向
		httpServletResponse.sendRedirect("/00000_request/http_servelt_response/one");
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}

转发与重定向的区别

package com.oracle.one.servlet.simple.request_dispatcher_send_redirect;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/servlet")
public class TestServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		
		httpServletRequest.setCharacterEncoding("utf-8");
		httpServletResponse.setContentType("text/html;charset=utf-8");
		
		httpServletRequest.setAttribute("name", "宋江");
		httpServletRequest.setAttribute("gender", "男");
		
		httpServletRequest.getRequestDispatcher("/servlet1").forward(httpServletRequest, httpServletResponse);
		//httpServletResponse.sendRedirect("/00000_request/servlet1");
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}
package com.oracle.one.servlet.simple.request_dispatcher_send_redirect;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/servlet1")
public class TestServlet1 extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		
		httpServletRequest.setCharacterEncoding("utf-8");
		httpServletResponse.setContentType("text/html;charset=utf-8");
		
		String name = (String)httpServletRequest.getAttribute("name");
		String gender = (String)httpServletRequest.getAttribute("gender");
		
		System.out.println(name + "\t" + gender);
				
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}

ServletConfig

javax.servlet
Interface ServletConfig
All Known Implementing Classes:
GenericServlet, HttpServlet

public interface ServletConfig

配置信息

String getInitParameter(String name)

package com.oracle.one.servlet.servlet_config;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet00000 extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	@Override
	public void init(ServletConfig servletConfig) throws ServletException {
		
		super.init(servletConfig);
		
		String name = servletConfig.getInitParameter("name");
		String gender = servletConfig.getInitParameter("gender");
		
		System.out.println(name + "\t" + gender);
		
	}

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		
		System.out.println("来了");
		
		ServletConfig servletConfig = getServletConfig();
		
		String name = servletConfig.getInitParameter("name");
		String gender = servletConfig.getInitParameter("gender");
		
		System.out.println("doGet()方法中:" + name + "\t" + gender);
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}
<servlet>
  	<servlet-name>MyHttpServlet</servlet-name>
  	<servlet-class>com.oracle.one.servlet.servlet_config.TestServlet00000</servlet-class>
  	
  	<init-param>
  		<param-name>name</param-name>
  		<param-value>宋江</param-value>
  	</init-param>
  	<init-param>
  		<param-name>gender</param-name>
  		<param-value>男</param-value>
  	</init-param>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>MyHttpServlet</servlet-name>
  	<url-pattern>/servlet_config/test_servlet00000</url-pattern>
  </servlet-mapping>

ServletContext

javax.servlet
Interface ServletContext

public interface ServletContext

共享上下文对象

String getInitParameter(String name)

void setAttribute(String name, Object object)
Object getAttribute(String name)

package com.oracle.one.servlet.servlet_context;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/servlet_context/my_servlet")
public class MyServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
       
	@Override
	public void init() throws ServletException {
		System.out.println("初始化");
	}

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
	
		ServletContext servletContext = getServletContext();
		String ip = servletContext.getInitParameter("ip");
		String port = servletContext.getInitParameter("port");
		
		System.out.println("ip:" + ip + "\tport:" + port);
		
		servletContext.setAttribute("name", "宋江");
		Object name = servletContext.getAttribute("name");
		System.out.println(name);
			
	}

}
package com.oracle.one.servlet.servlet_context;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/servlet_context/my_servlet1")
public class MyServlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
	
		ServletContext servletContext = getServletContext();
		Object name = servletContext.getAttribute("name");
		System.out.println(name);
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}
<context-param>
    <param-name>ip</param-name>
    <param-value>127.0.0.1</param-value>
  </context-param>
  <context-param>
    <param-name>port</param-name>
    <param-value>1234</param-value>
  </context-param>

Cookie

javax.servlet.http
Class Cookie

java.lang.Object
javax.servlet.http.Cookie

All Implemented Interfaces:
Serializable, Cloneable

public Cookie(String name, String value)

public void setMaxAge(int expiry)
public void setDomain(String domain)
public void setPath(String uri)

package com.oracle.one.servlet.cookie;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/cookie/my_servlet")
public class MyServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
	
		httpServletRequest.setCharacterEncoding("utf-8");
		httpServletResponse.setContentType("text/html;charset=utf-8");
		
		//第一次用户发起请求,将此相关数据存放至Cookie,并将Cookie响应到浏览器中。
		String name = "宋江";
		Cookie cookie = new Cookie("username", name); //设置cookie名称与内容。
		
		cookie.setDomain("localhost"); //设置域名
		cookie.setPath("/00000_request/cookie/my_servlet1"); //设置路径
		
		cookie.setMaxAge(60*60*24); //设置有效期:单位秒
		
		httpServletResponse.addCookie(cookie);
		
		PrintWriter printWriter = httpServletResponse.getWriter();
		printWriter.write("<html><body><h1>请求第一个Servlet成功,带回来了一个Cookie。<br><a href='http://localhost:8080/00000_request/cookie/my_servlet1'>点我查看</a></h1></body></html>");
		System.out.println("解析到的Cookie:" + cookie.getName() + ":" + cookie.getValue());
		
		printWriter.flush();
		printWriter.close();
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}
package com.oracle.one.servlet.cookie;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/cookie/my_servlet1")
public class MyServlet1 extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
	
		httpServletRequest.setCharacterEncoding("utf-8");
		httpServletResponse.setContentType("text/html;charset=utf-8");
		
		Cookie[] cookies = httpServletRequest.getCookies();
		
		PrintWriter printWriter = httpServletResponse.getWriter();
		
		if(cookies != null) {
			
			for(Cookie cookie : cookies) {
				printWriter.write("解析到的Cookie:" + cookie.getName() + ":" + cookie.getValue());
				printWriter.flush();
			}
			
		}else {
			printWriter.write("没有任何Cookie。");
		}
		
		printWriter.close();
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}

Session

case
package com.oracle.one.servlet.session;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/session/my_servlet")
public class MyServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
	
		httpServletRequest.setCharacterEncoding("utf-8");
		httpServletResponse.setContentType("text/html;charset=utf-8");
		
		HttpSession httpSession = httpServletRequest.getSession(); //获取客户端和服务端之间的连接会话,如果没有则新建一个会话。
		//HttpSession httpSession1 = httpServletRequest.getSession(false); //获取客户端和服务端之间的连接会话,如果没有则根据参数决定:true:新建会话,false:不新建会话,返回null
		
		System.out.println("客户端与服务端连接了一个会话:" + httpSession);
		
		//httpSession.setMaxInactiveInterval(60*5); //最大活跃周期,参数为秒。
		
		//借助会话对象,缓存数据。
		httpSession.setAttribute("id", "001");
		httpSession.setAttribute("age", 20);
		
		//清除HttpSession中指定的数据。
		//httpSession.removeAttribute("id"); 
		
		//清除HttpSession
		//httpSession.invalidate();
		
		PrintWriter printWriter = httpServletResponse.getWriter();
		printWriter.write("<h1>HttpSession会话创建成功!</h1>");
		printWriter.flush();
		printWriter.close();
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}
package com.oracle.one.servlet.session;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/session/my_servlet1")
public class MyServlet1 extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		
		httpServletRequest.setCharacterEncoding("utf-8");
		httpServletResponse.setContentType("text/html;charset=utf-8");
		
		HttpSession httpSession = httpServletRequest.getSession();
		
		String id = (String)httpSession.getAttribute("id");
		Integer age = (Integer)httpSession.getAttribute("age");
		
		System.out.println(id);
		System.out.println(age.toString());
	
		PrintWriter printWriter = httpServletResponse.getWriter();
		
		if(id != null & age != null ) {
		
			printWriter.write("<h1>学生学号:" + id + "<br>学生年龄:" + age + "</h1>");
			printWriter.flush();
			
		}else {
			
			printWriter.write("<h1>没有拿到HttpSession数据。</h1>");
			printWriter.flush();
			
		}
				
		printWriter.close();
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);
	}

}
HttpSession的有效期设置

void invalidate()

void setAttribute(String name, Object value)
Object getAttribute(String name)

void removeAttribute(String name)

void setMaxInactiveInterval(int interval)

也可以在web.xml文件中设置。

<!-- 设置当前项目中所有的HttpSession的生命周期,单位分钟。 -->
  <session-config>
  	<session-timeout>5</session-timeout>
  </session-config>

登录、退出案例

首页

<!DOCTYPE html>

<html>

	<head>
		<meta charset="UTF-8">
		<title>登录页面</title>
	</head>
	
	<body>
	
		<form action="http://localhost:8080/00000_request/session/login_case/login_servlet" method="post">
			
			<p>
				账号:<input type="text" name="username"/>
			</p>
			
			<p>
				密码:<input type="text" name="password"/>
			</p>
			
			<p>
				<input type="submit" value="提交"/>
			</p>
			
		</form>
	
	</body>
	
</html>

首页Servlet

package com.oracle.one.servlet.session.login_case;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/session/login_case/index_servlet")
public class IndexServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		
		httpServletRequest.setCharacterEncoding("utf-8");
		httpServletResponse.setContentType("text/html;charset=utf-8");
		
		//获取Session中的缓存身份。
		HttpSession httpSession = httpServletRequest.getSession();
		String username = (String)httpSession.getAttribute("username");
				
		PrintWriter printWriter = httpServletResponse.getWriter();
		
		//如果不为空,表示之前登录成功过,提示欢迎。
		if(username != null) {
				
			printWriter.write("<h1>欢迎:" + username + ",来到后台系统。<a href='" + httpServletRequest.getContextPath() + "/session/login_case/logout_servlet'>退出</a></h1>");
			printWriter.flush();                                                                                              
			
		}else {	
		
			//如果为空,则表示未登录成功,给予提示,并提供链接跳回登录页面。
			printWriter.write("<h1>请先登录!<a href='http://localhost:8080/00000_request/page/00000_servlet/00002_session_login_case/login.html'>点击跳回登录页面</a></h1>");
			printWriter.flush();
			
		}
			
		printWriter.close();
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
		doGet(httpServletRequest, httpServletResponse);		
	}

}

登录Servlet

package com.oracle.one.servlet.session.login_case;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/session/login_case/login_servlet")
public class LoginServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
	
		httpServletRequest.setCharacterEncoding("utf-8");
		httpServletResponse.setContentType("text/html;charset=utf-8");
		
		//获取账号、密码
		String username = httpServletRequest.getParameter("username");
		String password = httpServletRequest.getParameter("password");
		
		String username1 = "admin";
		String password1 = "123456";
		
		//检查账号、密码是否正确。
		if(username.equals(username1) && password.equals(password1)) {
			
			//账号、密码正确;借助Session存储登录用户的身份,打开系统后台首页。
			HttpSession httpSession = httpServletRequest.getSession();
			httpSession.setAttribute("username", username);
			
			String url = httpServletRequest.getContextPath();
			System.out.println("获取的Java Project名称:" + url);
			
			//重定向
			httpServletResponse.sendRedirect(url + "/session/login_case/index_servlet");
			
		}else {
			
			//错误:响应错误提示信息,并跳转至登录页面。
			PrintWriter printWriter = httpServletResponse.getWriter();
			printWriter.write("<h1>登录失败,请重新登录!<a href='http://localhost:8080" + httpServletRequest.getContextPath() + "/page/00000_servlet/00002_session_login_case/login.html'>点击跳回登录页面</a></h1>");
			printWriter.flush();
			printWriter.close();
			
		}
		
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {		
		doGet(httpServletRequest, httpServletResponse);
	}

}

退出Servlet

package com.oracle.one.servlet.session.login_case;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/session/login_case/logout_servlet")
public class LogoutServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
	
		//设置HttpSession会话的登录身份失效
		HttpSession httpSession = httpServletRequest.getSession();
		httpSession.invalidate();
		
		//重定向至登录页面。
		httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/page/00000_servlet/00002_session_login_case/login.html");
	
	}

	protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {	
		doGet(httpServletRequest, httpServletResponse);	
	}

}

过滤器

过滤器的应用

监听器

使用监听器统计在线人数

ServletContextListener接口

使用Servlet实现新闻增加

JSP

JSP简介

case

<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE HTML">

<html>
  <head>  
    <title>JSP page</title>
  </head>
  
  <body>
 
  	<a href="http://localhost:8080/00000_request/page/00000_servlet/00001/b.jsp?id=5">点击</a> <br>
    <a href="/00000_request/page/00000_servlet/00001/b.jsp?id=6">点击</a> <br>
    
  </body>
  
</html>
<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE HTML>

<html>
  
  <head>  
    <title>JSP page</title>
  </head>
  
  <body>
  
    id=${param.id}
    
  </body>

</html>

JSP语法

脚本

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<!DOCTYPE html>

<html>

	<head>
		<meta charset="utf-8">
		<title>Insert title here</title>
	</head>
	
	<body>
		
		<%-- JSP脚本注释 --%>
		
		<%
			for(int i=0; i<5; i++){
				System.out.println("i=" + i);
				out.write("<h2>测试标题。</h2>" + i);
			}
		%>
		
		<%
			for(int i=0; i<5; i++){
				
				out.write("<h3>测试JSP访问。</h3>" + i);
		%>
		
		<%
			}
		%>
		
		<hr>
		
		<h1>测试JSP访问。</h1>
		
		<%!
			public String name = "宋江";
		
			public void test00000(){
				System.out.print("name:" + name);
			}
		%>
		
		<%
			test00000();
		%>
		
		<hr>
		
		<%-- 以下的输出脚本相当于service方法内的out.write();输出。 --%>
		<%= name %>
		<%= 200 %>
		<%= "卢俊义" %>
		
	</body>

</html>

标签、指令

<%@ page language="java" 
         contentType="text/html; charset=utf-8" 
         pageEncoding="utf-8" 
		 import="java.util.*, java.io.*" %>

<%@ include file="00000_jsp.jsp" %> <!-- 动态引入 -->

<!DOCTYPE html>

<html>

	<head>
		<meta charset="utf-8">
		<title>Insert title here</title>
	</head>
	
	<body>
	
		<%
			List<String> list = new ArrayList<>();
		    list.add("宋江");
		    list.add("卢俊义");
		    list.add("吴用");
		    
		    list.forEach(e -> System.out.println(e));
		    
			File file = new File("1.txt");
			
		%>
		
		<!-- JSP页面默认支持:JSP内置标签。
		该引入方式为静态引入,将00000_jsp.jsp编译成1个可以显示的纯HTML网页,引入网页内容到当前网页。
		 -->
		<jsp:include page="00000_jsp.jsp"/>
		
	</body>
	
</html>

内置对象

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" 
         isErrorPage="true"%>
    
<!DOCTYPE html>

<html>

	<head>
		<meta charset="utf-8">
		<title>Insert title here</title>
	</head>
	
	<body>
	
		<%
			System.out.println(request); //请求对象
			System.out.println(response); //响应对象
			System.out.println(page); //当前页面对象
			System.out.println(pageContext); //当前JSP页面上、下文对象。
			System.out.println(application); //ServletContext上、下文全局共享数据
			System.out.println(session); //会话对象
			System.out.println(config); //当前Servlet程序的配置对象。
			System.out.println(out); //当前页面的输出流。
			
			System.out.println(exception); //只有当前JSP成为了异常处理代码块,才能识别到该异常对象。
		    
		%>
		
		<%
			pageContext.setAttribute("name", "林冲");
			String name = (String)pageContext.getAttribute("name");
			System.out.println("name=" + name);
			
			//pageContext可以控制其他对象,实现自定义属性值存储:可以操作request中的属性。
			pageContext.setAttribute("name1", "宋江", PageContext.REQUEST_SCOPE); //等同于request.setAttribute("name1", "宋江");
						
			pageContext.setAttribute("name2", "宋江", PageContext.SESSION_SCOPE); //等同于session.setAttribute("name1", "宋江");
						
			pageContext.setAttribute("name3", "宋江", PageContext.APPLICATION_SCOPE); //等同于servletContext.setAttribute("name1", "宋江");
						
			pageContext.setAttribute("name4", "宋江", PageContext.PAGE_SCOPE); //等同于pageContext.setAttribute("name1", "宋江"); 当前页面中
			
		%>
		
	</body>
	
</html>

表单与request对象## 中文乱码

页面间的数据传递

使用JSP保存数据

EL表达式

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"
	     import="java.util.*, com.oracle.one.jsp.entity.Dog"    
%>
    
<!DOCTYPE html>

<html>

	<head>
		<meta charset="utf-8">
		<title>EL表达式</title>
	</head>
	
	<body>
	
		<%
			pageContext.setAttribute("id", "001");
			request.setAttribute("name", "宋江");
			session.setAttribute("age", 23);
			application.setAttribute("gender", "男");
		%>
		
		${pageScope.id} <br>
		${} <br>
		${sessionScope.age} <br>
		${applicationScope.gender} <br>
		
		<!-- 当EL表达式未指定解析域范围时,将默认从page->request->session->application中依次查找。 如果最终找不到数据,则不显示数据,不报错。-->
		${id} 
		
		<hr>
		
		<%
			int number = 1;
		
		    int[] array = new int[]{1, 2, 3, 4, 5};
		    
		    List<String> names = new ArrayList<>();
		    names.add("宋江");
		    names.add("卢俊义");
		    names.add("吴用");
		    names.add("公孙胜");
		    
		    Map<String, String> map = new HashMap<>();
		    map.put("name", "潘金莲");
		    map.put("name1", "潘巧云");
		    map.put("name2", "阎婆惜");
		    
		    Dog dog = new Dog("旺财", 2);
		    
		    pageContext.setAttribute("number", number);
		    pageContext.setAttribute("array", array);
		    pageContext.setAttribute("names", names);
		    pageContext.setAttribute("map", map);
		    pageContext.setAttribute("dog", dog);
		        
		%>
		
		${number} <br>
		${array} <br>
		${names} <br>
		${map} <br>
		${dog} <br>
		
		<hr>
		
		${names[0]} - ${names[1]} <br>
		${map["name"]} - ${map['name1']} <br>
		${} - ${dog.age}
		
		<hr>
		
		${pageContext.request.contextPath}
	
	</body>
	
</html>

EL运算符

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<!DOCTYPE html>

<html>

	<head>
		<meta charset="uft-8">
		<title>EL运算符</title>
	</head>
	
	<body>
		
		<%
			pageContext.setAttribute("money", 9);
			pageContext.setAttribute("name", "宋江");
		%>
		
		${money+2} <br>
		${money-2} <br>
		${money*2} <br>
		${money/2} <br>
		${money>10} <br>
		${money>=10} <br>
		${money<10} <br>
		${money<=10} <br>
		${money==10} <br>
		${money eq 100} <br>
		${money>=10?"大于":"小于"} <br>
		${money>=10 and money<=5} <br>
		${money>=10 or money<=5} <br>
		${empty money} <br>
		${empty emoney1} <br>
		${not (money>10)}
		
	</body>
	
</html>

JSTL

内置函数

fn

java使用poi给ppt添加水印 javaweb ppt_java_32

<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

<!DOCTYPE HTML>

<html>

    <head> 
    
      <meta charset="utf-8"/> 
      <title>JSTL内置函数fn</title>
      
    </head>
  
    <body>

        <%
        	pageContext.setAttribute("name", "宋江"); 
        	pageContext.setAttribute("name1", " hi,卢俊义。");
        %>
        
        ${name} <br>
        ${fn:length(name)} <br>
        ${fn:indexOf(name, "江")} <br>
        ${fn:startsWith(name, "宋")} <br>
        ${fn:substring(name1, 0, 2)} <br>
        ${fn:toLowerCase(name1)} <br>
        ${fn:toUpperCase(name1)} <br>
        ${fn:trim(name1)}
       
    </body>
  
</html>

标签

c:out
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"
		 import="com.oracle.one.jsp.entity.Dog, java.util.*"
%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML>

<html>

  <head>
  	<meta charset="utf-8">  
    <title>c_out</title>
  </head>
  
  <body>
   
  	<%
  		Dog dog = new Dog("宋江", 50);	
  		request.setAttribute("dog", dog);
  		
  		List<String> list = new ArrayList<>();
  		list.add("卢俊义");
  		list.add("吴用");
  		list.add("公孙胜");
  		request.setAttribute("list", list);
  		
  		Map<String, String> map = new HashMap<>();
  		map.put("name", "潘金莲");
  		map.put("name1", "潘巧云");
  		map.put("name2", "阎婆惜");
  		request.setAttribute("map", map);
  		
  		int[] array = new int[]{1, 2, 3};
  		request.setAttribute("array", array);
  	 %>
  
  	${}
  	=
  	${dog.age}
  	
  	<br>
  	
    <c:out value="${}"/> 
    =
  	<c:out value="${dog.age * 3}"/>
  	
  	<hr>
  	
  	<c:out value="${list[0]}"/>  
  	<c:out value="${list[1]}"/>  
  	<c:out value="${list[2]}"/>  
  	<c:out value="${list[3]}"/> <!-- List集合中超过下标不输出任何内容 -->
  	
  	<hr>
  	
  	<c:out value="${map['name']}"/>  
  	<c:out value="${map['name1']}"/>  
  	<c:out value="${map['name2']}"/>  
  	<c:out value="${map['name3']}"/> <!-- map集合中访问不存在的键时不输出任何内容 -->
  	
  	<hr>
  	
  	<c:out value="${array[0]}"/>  
  	<c:out value="${array[1]}"/>  
  	<c:out value="${array[2]}"/>  
  	<c:out value="${array[3]}"/> <!-- 数组中超过下标不输出任何内容 -->
  	
  </body>
  
</html>
package com.oracle.one.jsp.entity;

public class Dog {

	private String name;
	private int age;
	
	public Dog(String name, int age) {
		 = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		 = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}
c:set
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"
	     import="java.util.*"
%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML>

<html>
  
  <head>  
    <title>c:set</title>
  </head>
  
  <body>
  
    <c:set var="one" value="中国,北京" scope="request"/>
    <c:out value="${one}"/>
    
  </body>
  
</html>
c:if
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"
		 import="com.oracle.one.jsp.entity.Dog"
%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML">

<html>

  <head> 
  	<meta charset="utf-8"> 
    <title>c:if</title>
  </head>
  
  <body>
  
    <%
    	request.setAttribute("a","helloa");
    	request.setAttribute("age","23");
    	
    	Dog dog = new Dog("宋江", 50);
    	request.setAttribute("dog", dog);
     %>
     
     <c:if test="${a=='hello'}">
     	ok <br>
     </c:if>
     
     <c:if test="${a!='hello'}">
     	no ok <br>
     </c:if>
     
     <c:if test="${age==56}">
     	ok 56 <br>
     </c:if>
     <c:if test="${age<56}">
     	no ok 56 <br>
     </c:if>
     
     <c:if test="${age>10 and age<34}">
     	age>10 and age<34 <br>
     </c:if>
     
     <hr>
     
     <c:if test="${dog.age>3}">
     	年龄大于3
     </c:if>
     
  </body>
  
</html>
c:choose
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"
         import="com.oracle.one.jsp.entity.Dog"
%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML">

<html>

  <head>
    <meta charset="utf-8">  
    <title>c:choose</title>
  </head>
  
  <body>
    
    <%
    	Dog dog = new Dog("宋江", 50);
    	
    	request.setAttribute("dog", dog);
     %>
     
     <c:choose>
     
     	<c:when test="${dog.age<18}">
     		<font color="red">未成年</font>
     	</c:when>
     
     	<c:when test="${dog.age>18 and dog.age<50}">
     		<font color="green">青年</font>
     	</c:when>
     
     	<c:otherwise>
     		<font color="blue">中年</font>
     	</c:otherwise>
     
     </c:choose>
     
  </body>
  
</html>
c:foreach
case1
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"
		 import="java.util.*, com.oracle.one.jsp.entity.Dog"
%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML">

<html>

  <head>  
  	<meta charset="utf-8">
    <title>c:foreach</title>
  </head>
  
  <body>

    <%
    	List<Dog> dogs = new ArrayList<>();
     	
    	Dog dog = new Dog("宋江", 50);   	
     	Dog dog1 = new Dog("卢俊义", 51);
     	Dog dog2 = new Dog("吴用", 52);
 
     	dogs.add(dog);
     	dogs.add(dog1);
     	dogs.add(dog2);
     	
     	request.setAttribute("dogs", dogs);
     	
     	@SuppressWarnings("unchecked")
     	List<Dog> dogsObject = (ArrayList<Dog>)request.getAttribute("dogs");
   
     	for(Dog dogSimple : dogsObject) {
     		out.println(dogSimple.getName() + " " + dogSimple.getAge());
     	}

     %>
     
     <br>
     
     <c:forEach items="${dogs}" var="dog" >
     	<c:out value="${}"/>
     	<c:out value="${dog.age}"/>
     </c:forEach>
     
     <hr>
     
     <c:forEach var="i" begin="1" end="10">
     	<c:out value="${i}"/> -> 
     </c:forEach>
     
     <hr>
     
     <c:forEach var="i" begin="3" end="10" step="2">
     	<c:out value="${i}"/> -->
     </c:forEach>
     
  </body>
  
</html>
case2
<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"
		import="java.util.*, com.oracle.one.jsp.entity.Dog"
%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML>

<html>
  
  <head>  
   	<meta charset="utf-8">
    <title>c:forEach</title>
  </head>
  
  <body>
    <%
    	Map<String, Dog> map = new HashMap<>();
    	
    	Dog dog = new Dog("宋江", 50);    	
     	Dog dog1 = new Dog("卢俊义", 51);
    	Dog dog2 = new Dog("吴用", 52);
        map.put("dog", dog);
     	map.put("dog1", dog1);
     	map.put("dog2", dog2);
     	
    	request.setAttribute("map", map);
    	
    	Set<Dog> set = new HashSet<>();
    	set.add(dog);
    	set.add(dog1);
    	set.add(dog2);
    	
    	request.setAttribute("set", set);
    	
     %>
     
     <c:forEach items="${map}" var="mapDog">
     	key=${mapDog.key } 
     	=${mapDog. }
     	value.age=${mapDog.value.age } <br>
     </c:forEach>
     
     <hr>
     
     <c:forEach items="${set}" var="setDog">
     	value=${set}
     	age = ${setDog.age } <br>
     </c:forEach>
     
     <hr>
     
     <c:if test="${empty map}">
     	没有
     </c:if>
     <c:if test="${!empty set}">
     	有
     </c:if>
     
  </body>
  
</html>
c:remove
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"
	     import="java.util.*"
%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML>

<html>

  <head>  
	<meta charset="utf-8"/>
    <title>c:remove</title>
  </head>
  
  <body>
  	<%
  		request.setAttribute("one", "你好");
   	%>
   	
    <c:out value="${one}"/> <br>
    
    <c:remove var="one"/>
    
    <c:out value="${a}" default="没有了"/>
    
  </body>
  
</html>
c:import
c:redirect
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE HTML>

<html>
  <head>
  	<meta charset="utf-8"/>  
    <title>c:redirect</title>
  </head>
  
  <body>
  
    <c:redirect url="http://www.baidu.com"/>
    
  </body>
  
</html>
c:forTokes
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML">

<html>

  <head>  
  	<meta charset="utf-8"/>
    <title>c:forTokes</title>
  </head>
  
  <body>
  	
  	<%
  		request.setAttribute("abc", "12; 56; 你好;ddd; uuu");  /* 12           56; 你好; ddd              uuu */
  	%>
  	 
    <c:forTokens items="${abc}" delims=";" var="temp" begin="0" end="2" step="2">
    	${temp} <br>
    </c:forTokens>
    
  </body>
  
</html>
c:catch
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML>

<html>
  
  <head>  
  	<meta charset="utf-8">
    <title>c:catch</title>
  </head>
  
  <body>
    
    <c:catch var="myException">
    	<% int i=8/0; %>
    </c:catch>
    
    <c:out value="${myException}"/> <br>
    <c:out value="${myException.message}"/>
    
  </body>
  
</html>

JDBC

package com.greensea.manage.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

public class TestJdbc {
	
	@Test
	public void testJdbc() {
		
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
			
			connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_jack?characterEncoding=utf-8", "root", "root");
			preparedStatement = connection.prepareStatement("select * from t_user where id=? and username=?");
			preparedStatement.setString(1, "67"); //参数编号从1开始
			preparedStatement.setString(2, "宋江");
			resultSet = preparedStatement.executeQuery();
			
			while(resultSet.next()) {
				System.out.println(resultSet.getString("id"));
				System.out.println(resultSet.getString("username"));
				System.out.println(resultSet.getString("password"));
				System.out.println(resultSet.getString("age"));
				System.out.println(resultSet.getString("sex"));
				System.out.println(resultSet.getString("email"));
			}
				
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(resultSet!=null) {
				try {
					resultSet.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(preparedStatement!=null) {
				try {
					preparedStatement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(connection!=null) {
				try {
					connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		
	}

}

JDBC概述

设置配置文件

PreparedStatement概述

使用通用类优化数据库操作

数据源与连接池