提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。
web服务端:Tomct、配置Tomcat服务器。
Maven:配置Maven项目
idea创建Maven项目
HttpServlet
一、Servlet
1. 什么是Servlet
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,泛指用 Java编写的服务器端程序。在编程过程中也指一切 实现了Servlet接口的类(约定以Servlet结尾命名)。
2. Servlet主要功能
2.1 Servlet的简单运用流程展示
- 客户端发送请求至服务器端
- 服务器将请求信息发送至 Servlet
- Servlet 生成响应内容并将其传给服务器,响应内 容动态生成
- 服务器将响应返回给客户端
2.2 ServletContext
web容器启动时,它会为每一个web程序都创建一个对应的ServlerContext对象,代表当前的web应用
- 可以共享数据
- 在一个Servlet中保存的数据,可以在另一个Servlet中拿到
添加数据
ServletContext servletContext = this.getServletContext();
servletContext.setAttribute("name","huangzhiran");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");
resp.getWriter().print("成功添加数据到Context中");
获取数据
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
ServletContext servletContext = this.getServletContext();
Object name = servletContext.getAttribute("name");
resp.getWriter().print("成功取得Servlet Context中的数据"+name);
2.3 HttpServletResponse
response:响应,服务器响应给客户端
addCookie();//添加Cookie
sendError();//发送错误
sendRedirect();//重定向
addHeader();//添加请求头
2.4 HttpServletRequest
request:请求,客户端请求服务器
getCookie();//获得Cookie
getHeader();//获得请求头
getContextPath();//获得上下文路径
getSession();//获得session
getParameter()//获取参数值
request和response的使用
<form action="/login" method="get">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"> <br>
<input type="submit">
</form>
System.out.println("成功进来");
System.out.println(req.getParameter("username"));
System.out.println(req.getParameter("password"));
resp.sendRedirect("/captcha");
3. Cookie
Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息
cookie的使用
//设置响应编码,设置请求编码
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html");
//向浏览器响应内容
PrintWriter out = resp.getWriter();
//服务器从客户端获取Cookie
Cookie[] cookies = req.getCookies();
//判断Cookie是否存在
if (cookies!=null) {
//存在Cookie
out.write("您上次访问的时间是:");
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
//获取Cookie的名字
String name = cookie.getName();
//根据名字获取Cookie的值
if (name.equals("lastTime")){
String value = cookie.getValue();
//将获得value值转换成Date形式
long lastTime = Long.parseLong(value);
Date date = new Date(lastTime);
//再将时间转换成字符串格式
out.write(date.toLocaleString());
}
}
}else {
out.write("您是第一次登录");
}
//服务器给客户端响应一个Cookie
Cookie lastTime = new Cookie("lastTime", System.currentTimeMillis() + "");
resp.addCookie(lastTime);
4. Session
服务器会给每个用户创建一个Session对象
一个Session独占一个浏览器,只要浏览器没有关闭这是Session就存在
向Session中添加数据
//获得Session
HttpSession session = req.getSession();
//向Session中添加数据 key:value
session.setAttribute("name","黄");
resp.getWriter().write("添加成功");
读取Session中的数据
//获取Session
HttpSession session = req.getSession();
//浏览器输出SessionId和存入的数据
resp.getWriter().write(session.getId()+":"+session.getAttribute("name"));
删除Session中的数据
session.removeAttribute("name");
清除Session
//将Session关闭
session.invalidate();
4. Session和Cookie的区别
- Cookie是把用户的数据写给用户的浏览器,浏览器保存
- Session把用户的数据写到用户独占的Session中,服务器端保存
- Session对象由服务器创建
二、JSP(JavaServer Pages)
JSP也是一个Servlet类,Java服务器端页面,和Servlet一样,用于动态Web技术
1.基础语法
1.1表达式
<%--JSP表达式
<%= 变量或者表达式%>
--%>
<%String name="huang";%>
<%=name%>
<%=new Date()%>
1.2脚本片段
<%--jsp脚本--%>
<%
int sum=0;
for (int i = 0; i < 100; i++) {
sum+=i;
}
//out.write(sum);
out.println(sum);
%>
1.3脚本片段的再现
<%--jsp脚本片段的再实现--%>
<%
int x =10;
out.println(x);
%>
<p>这是JSP</p>
<%
int y= 20;
out.println(y);
%>
<hr>
<%--在代码中镶嵌html--%>
<%
for (int i = 0; i <5; i++) {
%>
<h1>Hello Word! <%=i%></h1>
<% }
%>
1.4声明
<%--jsp声明
相当于Java中的全局变量
--%>
<%!static int i=4;
public void test(int i){
System.out.println(i);
}
%>
2.jsp指令
<%@include file=""%>
<%@page args.... %>
<%@taglib prefix="" %>
可以使用jsp标签
<jsp:include page=“/common/footer.jsp”/>
3.内置对象
PageContext
Request
Response
Session
Application
config
out
page
exception
###3.1. 常用内置对象的使用
<%
pageContext.setAttribute("name1","huang1");
request.setAttribute("name2","huang2");
session.setAttribute("name3","huang3");
application.setAttribute("name4","huang4");
%>
<%
String name1 =(String) pageContext.findAttribute("name1");
String name2 =(String) pageContext.findAttribute("name2");
String name3 =(String) pageContext.findAttribute("name3");
String name4 =(String) pageContext.findAttribute("name4");
%>
<h1>${name1}</h1>
<h1>${name2}</h1>
<h1>${name3}</h1>
<h1>${name4}</h1>
pageContext.setAttribute(“name1”,“huang1”);//保存的数据只在一个页面中有效
request.setAttribute(“name2”,“huang2”);//保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute(“name3”,“huang3”);//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute(“name4”,“huang4”);//保存的数据只在服务器中有效,从打开服务器到关闭服务器
4.JSTL表达式
常用表达式
导入头文件
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary>2000}">
<c:out value="${salary}"></c:out>
</c:if>
<c:forEach var="i" items="huang,zhi,ran">
<c:out value="${i}"></c:out>
</c:forEach>
5.JavaBean
实体类
JavaBean有特定的写法
必须要有一个参数
属性必须私有化
必须有对应的get/set方法