栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Javaweb基础功能,七天免登录+设置会话T出功能--思路JSTL session cookie

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Javaweb基础功能,七天免登录+设置会话T出功能--思路JSTL session cookie

@WebServlet("/login")
public class LoginServlet extends HttpServlet {

     @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        获取表单里name数据到request
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String check = req.getParameter("check");

        //创建公共全局域
        ServletContext servletContext = req.getServletContext();
        Object o= servletContext.getAttribute("users");
        //如果全局域里没有user对象,则返回登录
        if (o==null){
            resp.sendRedirect("login.jsp");
            return;
        }
        //          父     转       子
        ArrayList list =(ArrayList) o;
        //
        String pwd="";   //账号密码
        
        for (int i = 0; i  
 

登录

先注册再登陆

先获取前台的请求name,
再获取公共域users,此时是o类型

再判断公共域是否有users对象,
第一次,则创建一个新的集合,将数据放入集合中,再将集合放到application作用域中。

如果有,则将o类型对象转为集合类型
然后遍历该集合
// 判断用户名是否相同
该集合getname里是否和请求name相同,
相同则提示重复,转发到注册界面。
不相同则创建一个user对象,赋值之后将该对象添加到集合,再将该集合放到application作用域。

最后
重定向到登陆界面。

登陆
获取请求参数name等。
再获取公共域users,此时是o类型

判断公共域是否有对象,如果全局域里没有user对象,则重定向到登录界面。
将o类型转集合类型
定义一个 String pwd=""中间变量
遍历集合
 //  如果存在该用户,将真实密码给pwd;
            //  如果不存在用户 pwd为空;
与“”比,用户不存在,转发到登陆
与请求到密码比不相同,密码错误,转发到登陆。

显示当前登陆对象功能(原理把当前对象以key,value形式存到会话。用EL表达式获取值)
获取session对象
将登陆成功的用户名存到session域
session.setAttribute("name", username);
????将session对象存到公共域???
   req.getServletContext().setAttribute(username, session);
重定向主页???


七天免登陆功能(原理 给cookie 设置过期时间)


会话T出功能(原理 设置会话失效时间)
获取当前请求用户名,放到公共域,o类型
判断o 是否为空
将o转session类型
设置失效时间


上传功能

输入框类型 file,servlet上加@MultipartConfig
获取请求上传的文件,和文件名

io流


下载
获取请求参数name
设置下载地址







四大域都是在服务器内部
 

@WebServlet("/register")
public class RegisterServlet extends HttpServlet {

      @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        //1.拿到servlet上下文对象,
        ServletContext servletContext = req.getServletContext();

        // 2.从servletContext中获取users的数据
        Object o = servletContext.getAttribute("users");

        // 判断公共域里是否有user对象
        if (o==null){

            //第一次,则创建一个新的集合,将数据放入集合中,再将集合放到application作用域中
            ArrayList list = new ArrayList();
            // 创建user对象
            User user = new User();
            user.setUsername(username);
            user.setPassword(password);
            list.add(user);
            //添加到公共域
            servletContext.setAttribute("users", list);
        }else {
            //如果是有对象的     ?
            ArrayList list = (ArrayList) o;

             //判断用户名是否重复
            for (User user : list) {
                if (user.getUsername().equals(username)) {
                    req.setAttribute("msg", "用户名已存在,不能重复注册");
                    req.getRequestDispatcher("register.jsp").forward(req, resp);
                    return;
                }
            }

            //用户名不存在,可以注册
            User user = new User();
            user.setUsername(username);
            user.setPassword(password);

            list.add(user);
            servletContext.setAttribute("users", list);
        }
//        注册成功
        resp.sendRedirect("login.jsp");

    }
}

注册


    欢迎${user}使用本系统

    
            
用户名 密码 操作
${user.username} ${user.password} 删除

index.jsp


    登录
    
用户名:
密码:
七天免登录
${msg}
注册账号

login.jsp


    注册账号
    
用户名: 密码:${msg}
去登录

register.jsp

Servlet使用 HttpServletRequest请求

HttpServletRequest代表请求,凡是请求中的数据都可以从这个对象获取

 //获取前台表单传过来的数据,后面username对应form表单中的标签的name值
 req.getParameter("username");

HttpServletResponse响应
 //向前台响应内容
 resp.getWriter().write("register success");
转发

将请求转发给其它资源来处理,这个过程就叫转发

 req.getRequestDispatcher("success.html").forward(req, resp);
重定向

将请求重新定位到其它地址中去

 resp.sendRedirect("success.html");
转发与重定向的区别
  • 转发只发起1次请求,而重定向2次请求

  • 转发不会改变地址栏,而重定向会改变地址栏

  • 转发可以获取request作用域中的数据,而重定向不行

如果跳转时要携带数据,用转发,如果不携带数据用重定向

Jsp

JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准

jsp的使用 JSTL

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

根据JSTL标签所提供的功能,可以将其分为5个类别。

jstl是对el表达式(${msg})的增强。

  • 核心标签

  • 格式化标签

  • SQL 标签

  • XML 标签

  • JSTL 函数

JSTL的使用
  • 导入依赖包

  • 导入对应的标签的命名空间

 
     
         ${user.username}
         ${user.password}
     
 
会话管理 session

session是会话保持技术之一,通过为每个连接分配sessionid的方式,为区分和识别每个连接。

在JavaWeb中,就有一个HttpSession对象,它就是用来存储和管理session的。通过session对象,我们可以向session作用域存放数据,也可以从session作用域取数据。具体代码如下

 //放数据
 session.setAttribute("name", "value");
 //取数据
 session.getAttribute("name");   //返回value
cookie

cookie是会话保持技术之一,是一种小型文本文件。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/643848.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号