java-web

 javaweb-jsp

<%@ page import="java.util.*" %><%--
  Created by IntelliJ IDEA.
  User: 23802
  Date: 2022/4/19
  Time: 14:02
  To change this template use File | Settings | File Templates.
--%>
<%--errorPage="index.jsp" 如果有错误跳转的index.jsp页面--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" errorPage="index.jsp" %>
<%--引入标签--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--    相当于java输入代码--%>
<%
    //小脚本,不常用
    //单次请求有效
    request.setAttribute();
%>
<%=request//输出
%>
<%
    //整个会话中有效
    session.setAttribute();
%>
<%
    //application表示整个程序运行期间有效,即使换浏览器也能使用
    application.setAttribute();
%>
<%
    //page=this 当前页面
    pageContext.setAttribute();
%>

<%
    //out输出 可输出js语言
    out.print("aaaa");
%>
<%
    //获得配置信息
    config.getInitParameter("");
%>
//获得错误对象信息
<%=exception.getMessage();
%>
<%--把其它页面内容引入本文件中--%>
<%@include file="index.jsp"%>

<%--El表达式--%>
<%//EL表达式想要读取变量,则该变量一定要在作用域中:pageContext,request,
    //session,application
    int a = 10;
    pageContext.setAttribute("a1",a);
    List list = new ArrayList();
    list.add("abcc");
    pageContext.setAttribute("b1",list);
    //map集合
    Map map=new HashMap<>();
    map.put("k","kk");
    pageContext.setAttribute("c1",map);
//    在key相同的情况下,会从作用域范围从小到大找
    pageContext.setAttribute("a","aa");
    request.setAttribute("a","aa");
    session.setAttribute("a","aa");
    application.setAttribute("a","aa");
%>
a=${a1}<br>
<%--读取整个集合--%>
b1=${a1}<br>
<%--读取集合中的一个--%>
bb=${a1[0]}<br>
c=${c1.k}<br>

<h1>jstl</h1>
<%--存值 --%>
<c:set var="uname" value="嗷嗷嗷" scope="session"></c:set>
<%--输出--%>
<c:out value="${sessionScope.uname}"></c:out>
<%--比较,如果是则输出aaaaa--%>
<c:if test="${uname=='aaa'}">
    aaaaa
</c:if>
<%--多选择--%>
<c:choose>
    <c:when test="${uname=='aaa'}"></c:when>
    <c:otherwise>否则</c:otherwise>
</c:choose>

<%--循环--%>
<%
    List list1 = new ArrayList();
    list.add(1);
    list.add(2);
    list.add(3);
    pageContext.setAttribute("ulist",list);
%>
<c:forEach items="${ulist}" var="user" varStatus="sta">
<%-- varStatus 给循环标签进行排序 count从1开始 index从0开始   --%>
    ${sta.count}---${sta.index} ${user}<br>
</c:forEach>
<%--格式化--%>
<%
    pageContext.setAttribute("utime",new Date());
%>
date=<fmt:formatDate value="${utime}" pattern="yyy-MM-dd"></fmt:formatDate>
</body>
</html>

cookie的使用方法

package servlet;

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;
import java.io.IOException;

@WebServlet(urlPatterns = "/login")
public class CookieServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1.接收参数
        String username = req.getParameter("username");
        String pass = req.getParameter("pass");
//        2.判断正误
        if ("admin".equals(username)&&"123456".equals(pass)){
//            登录成功
            req.getRequestDispatcher("success.jsp").forward(req,resp);
        }else {
//            登录失败
//            1.后台创建cookie
            Cookie cookie = new Cookie("uname", username);

//            2.返回给前端
            resp.addCookie(cookie);
//            设置cookie有效时间 默认当前会话时间内有效
            cookie.setMaxAge(60*60);//以秒为单位
            resp.sendRedirect("ucookie.jsp");
        }
    }
}
<%--
  Created by IntelliJ IDEA.
  User: 23802
  Date: 2022/4/19
  Time: 16:17
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    Cookie[] cookies = request.getCookies();
    String value="";
    if (cookies!=null && cookies.length>0){
        for (Cookie cookie : cookies) {
            if (cookie.getName().equals("uname")){
                value = cookie.getValue();
                break;
            }
        }
    }
    pageContext.setAttribute("unamecookie",value);
%>
<h1>cookie</h1>
<form action="login" method="post">
    用户名:<input type="text" name="username" value="${unamecookie}">
    密码:<input type="password" name="pass">
    <input type="submit" value="login">
</form>
</body>
</html>

session使用

//            session存值
            HttpSession session = req.getSession();
            session.setAttribute("username",username);
            session.setAttribute("password",pass);
            session.setMaxInactiveInterval(60*30);//单位秒,默认30分钟
            req.getSession().invalidate();//使sess失效
session取值:${sessionScope.username}

Session与cookie

  1. session数据保存在客户端 cookie数据保存在服务器端
  2. Session是由应⽤服务器维持的⼀个服务器端的存储空间,⽤户在连接服务器时,会由服务器⽣成⼀ 个唯⼀的SessionID,⽤该SessionID 为标识符来存取服务器端的Session存储空间。⽽SessionID这⼀数据 则是保存到客户端,⽤Cookie保存的,⽤户提交⻚⾯时,会将这⼀SessionID提交到服务器端,来存取 Session数据。这⼀过程,是不⽤开发⼈员⼲预的。所以⼀旦客户端禁⽤Cookie,那么Session也会失 效。
  3. ) Cookies是属于Session对象的⼀种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者 ⼀个Cookie的⽂本⽂件中;⽽Session则会占⽤服务器资源。

过滤器

<filter>
        <filter-name>f</filter-name>
        <filter-class>util.Filter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>f</filter-name>
        <url-pattern>/login</url-pattern>
<!--        /* 为所有servlet可用-->
    </filter-mapping>
package util;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Filter implements javax.servlet.Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("初始化filter");//当服务器启动时执行init
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("过滤器开始");
//        处理乱码
       HttpServletRequest request=(HttpServletRequest) servletRequest;
       HttpServletResponse response = (HttpServletResponse)servletResponse;
       request.setCharacterEncoding("utf-8");
//       防止用户在未登录的情况下访问资源
        String requestURI = request.getRequestURI();//获得请求地址
        System.out.println("requestURI="+requestURI);
        Object username = request.getSession().getAttribute("username");
//        如果当前访问页面用户名为空,返回登录页面
        if (requestURI.endsWith("ucookie.jsp")&&username==null){
            response.sendRedirect("index.jsp");
        }
    }

    @Override
    public void destroy() {
        System.out.println("销毁filter");
    }
}

监听器

1

<listener>
        <listener-class>util.SessionListener</listener-class>
    </listener>
package util;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class SessionListener implements HttpSessionBindingListener {
    @Override
    public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("session创建");
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("session销毁");
    }
}

监听器2

<listener>
        <listener-class>util.AttributeListener</listener-class>
    </listener>
package util;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class AttributeListener implements HttpSessionAttributeListener {
    @Override
    public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("session存值,"+httpSessionBindingEvent.getName()+","+httpSessionBindingEvent.getValue());
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("session移除");

    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("session销毁");
    }
}

AJAX

异步操作

package ajax;

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 java.io.IOException;
import java.io.PrintWriter;

@WebServlet(urlPatterns = "/testAjax")
public class TestAjax extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1.接收参数
        String username = req.getParameter("username");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        if ("abcd".equals(username)){
            writer.println("账户已被注册");
        }else {
            writer.println("取名成功");
        }

    }
}

1

<%--
  Created by IntelliJ IDEA.
  User: 23802
  Date: 2022/4/20
  Time: 13:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<script type="text/javascript">
    function test(){
        //发送异步请求
    //    1.创建XMLHttpRequest对象
        var xmlHttp;
        if (window.XMLHttpRequest){
        //    非IE
            xmlHttp = new XMLHttpRequest();
        }else (window.ActiveXObject){
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    //    2.打开链接
        var uname=document.getElementById("uname").value;
        // xmlHttp.open("get","/testAjax?username="+uname,true);
        xmlHttp.open("post","testAjax",true);
    //    3指定回调函数
    //    onreadystatechange属性存有处理服务器响应的函数
        xmlHttp.onreadystatechange=function(){
        // 3.1 判断状态 readyState属性村欧服务器响应的状态信息,每当readyState改变时,onreadystatechange函数就会被执行。
        //    readyState属性可能的值:0请求未初始化 1请求已提出 2.请求已发送 3.请求处理中 4.请求已完成

            if (xmlHttp.readyState==4){
            //    3.2接收返回的数据
            //    responseText获取有服务器返回的数据
               var responseText=xmlHttp.responseText;
               document.getElementById("a").innerText=responseText;
            }
        }
        //    4.发送数据
        //xmlHttp.send();
    //    post
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8");

    }


</script>
<body>
<h1>index.jsp</h1>
username:<input type="text" id="uname" onblur="test()"><span id="a"></span>

</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: 23802
  Date: 2022/4/20
  Time: 13:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<script type="text/javascript">
    function test(){
        //发送异步请求
    //    1.创建XMLHttpRequest对象
        var xmlHttp;
        if (window.XMLHttpRequest){
        //    非IE
            xmlHttp = new XMLHttpRequest();
        }else (window.ActiveXObject){
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    //    2.打开链接
        var uname=document.getElementById("uname").value;
        // xmlHttp.open("get","/testAjax?username="+uname,true);
        xmlHttp.open("post","testAjax",true);
    //    3指定回调函数
    //    onreadystatechange属性存有处理服务器响应的函数
        xmlHttp.onreadystatechange=function(){
        // 3.1 判断状态 readyState属性村欧服务器响应的状态信息,每当readyState改变时,onreadystatechange函数就会被执行。
        //    readyState属性可能的值:0请求未初始化 1请求已提出 2.请求已发送 3.请求处理中 4.请求已完成

            if (xmlHttp.readyState==4){
            //    3.2接收返回的数据
            //    responseText获取有服务器返回的数据
               var responseText=xmlHttp.responseText;
               document.getElementById("a").innerText=responseText;
            }
        }
        //    4.发送数据
        //xmlHttp.send();
    //    post
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8");

    }


</script>
<body>
<h1>index.jsp</h1>
username:<input type="text" id="uname" onblur="test()"><span id="a"></span>

</body>
</html>

2

<%--
  Created by IntelliJ IDEA.
  User: 23802
  Date: 2022/4/20
  Time: 13:50
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<script type="text/javascript" src="js.jquery-1.8.0.min.js"></script>
<script type="text/javascript">
    $(function (){
        $("#uname").blur(function (){
        //    1.获得value值
            var uname = $(this).val();
            //2.发送请求
            /* $.ajax({
               url:"/testuname",
               data:"username="+uname,
               type:"post",
               dataType:"text",
               success:function(rs){
                 $("#rs").html(rs);
               }
                });
               */
            /* $.get("/testuname","username="+uname,function(rs){
                 $("#rs").html(rs);
              });*/
            $.post("/testAjax","username="+uname,function (aa){
                $("#a").html(aa);
            });
        });
    });
</script>
<body>
<h1>jquery_ajac.jsp</h1>
username:<input type="text" id="uname" ><span id="a"></span>

</body>
</html>

实现

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值