小白学Java——JavaWeb基础

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

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的简单运用流程展示

  1. 客户端发送请求至服务器端
  2. 服务器将请求信息发送至 Servlet
  3. Servlet 生成响应内容并将其传给服务器,响应内 容动态生成
  4. 服务器将响应返回给客户端

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方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值