主页 > Java问答 > Java web开发知识点汇总

Java web开发需要学习哪些知识?Java web开发知识点汇总

  • 更新时间:
  • 编辑:郑兴学
  • 9294人关注

我们给大家整理了关于Java web开发知识点汇总相关问题的精选回答,答案涉及到java、web开发需要学习哪些知识、Java web的方面,如果大家想对相关知识点打算深入的了解,可以参阅以下电子资料:

Java web开发需要学习哪些知识

在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。

Cookie

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用Cookie实际上只能存储一小段的文本信息。

例如:登录网站,今输入用户名密码登录了,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是Cookie。

Session

Session是另一种记录客户状态的机制,它是在服务端保存的一个数据结构(主要存储的的SessionID和Session内容,同时也包含了很多自定义的内容如:用户基础信息、权限信息、用户机构信息、固定变量等),这个数据可以保存在集群、数据库、文件中,用于跟踪用户的状态。

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

用户第一次登录后,浏览器会将用户信息发送给服务器,服务器会为该用户创建一个SessionId,并在响应内容(Cookie)中将该SessionId一并返回给浏览器,浏览器将这些数据保存在本地。当用户再次发送请求时,浏览器会自动的把上次请求存储的Cookie数据自动的携带给服务器。

服务器接收到请求信息后,会通过浏览器请求的数据中的SessionId判断当前是哪个用户,然后根据SessionId在Session库中获取用户的Session数据返回给浏览器。

例如:购物车,添加了商品之后客户端处可以知道添加了哪些商品,而服务器端如何判别呢,所以也需要存储一些信息就用到了Session。

如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

Token

HTTP请求都是以无状态的形式对接。即HTTP服务器不知道本次请求和上一次请求是否有关联。所以就有了Session的引入,即服务端和客户端都保存一段文本,客户端每次发起请求都带着,这样服务器就知道客户端是否发起过请求。

这样,就导致客户端频繁向服务端发出请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否。而Session的存储是需要空间的,频繁的查询数据库给服务器造成很大的压力。

在这种情况下,Token应用而生。

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌。当客户端第一次访问服务端,服务端会根据传过来的唯一标识userId,运用一些算法,并加上密钥,生成一个Token,然后通过BASE64编码一下之后将这个Token返回给客户端,客户端将Token保存起来(可以通过数据库或文件形式保存本地)。下次请求时,客户端只需要带上Token,服务器收到请求后,会用相同的算法和密钥去验证Token。

最简单的Token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由Token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接Token请求服务器)。  

使用基于Token的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

客户端使用用户名跟密码请求登录

服务端收到请求,去验证用户名与密码

验证成功后,服务端会签发一个Token,再把这个Token发送给客户端

客户端收到Token以后可以把它存储起来,比如放在Cookie里或者数据库里

客户端每次向服务端请求资源的时候需要带着服务端签发的Token

服务端收到请求,然后去验证客户端请求里面带着的Token,如果验证成功,就向客户端返回请求的数据

APP登录的时候发送加密的用户名和密码到服务器,服务器验证用户名和密码,如果成功,以某种方式比如随机生成32位的字符串作为Token,存储到服务器中,并返回Token到APP,以后APP请求时,凡是需要验证的地方都要带上该Token,然后服务器端验证Token,成功返回所需要的结果,失败返回错误信息,让他重新登录。

对于同一个APP同一个手机当前只有一个Token;手机APP会存储一个当前有效的Token。其中服务器上Token设置一个有效期,每次APP请求的时候都验证Token和有效期。

以上就是“www.javaxue.com”java培训机构的小编针对“Java web开发需要学习哪些知识”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

java学习网
回答:禄氷羙

1小时10分钟前补充回答

linux下用renameTo方法修改java web项目中文件夹名称的实例

renameTo方法修改java web项目文件夹名称

经测试,在Linux环境中安装tomcat,然后启动其中的项目,在项目中使用java.io.File.renameTo(File dest)方法可行。

之前在本地运行代码可以修改,然后传到Linux服务器上一直无法实现功能,自己一直在捣鼓,以为是window环境和Linux环境不同的原因导致,后面发现在项目中使用renameTo方法修改文件夹名称不行是因为之前改了java web项目中的js,在js中传入值到后台,后台根据值来修改文件夹名称。由于没清除缓存导致js中的代码没有刷新,所以一直出现错误。

/**
   * 更改文件夹名称
   * @param oldName 旧的路径+文件夹名
   * @param newName 新的路径+文件夹名
   */
  public void renameFile(String oldName,String newName){
    File newFile = new File(newName);
    File oldFile=new File(oldName);//旧的文件夹必须存在
    boolean result=oldFile.renameTo(newFile);
    if(result){
      LogLog.debug(oldName +" -> "+ newName);
    }else{
      LogLog.error("Failed to rename["+oldName+"] to ["+newName+"].");
      }
    }
  }

以上这篇linux下用renameTo方法修改java web项目中文件夹名称的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持java学习网。

展开阅读
java学习网
回答:茹朋兴

20小时39分钟前补充回答

javaWeb项目部署到阿里云服务器步骤详解

阿里云服务器部署java

记录web项目部署到阿里云服务器步骤

(使用 web项目、阿里云服务器、Xftp、Xshell),敬请参考和指正

1.将要部署的项目打包成WAR文件格式,可以在MyEclipse、Eclipse都可以完成打包,如下图:

2.安装Xshell和Xftp两种软件

简单介绍下这两种软件作用(详情请百度相关文档)

Xshell:通过网络连接到远程服务器主机。

Xftp:能在Linux、Unix和Windows之间互传文件。

3.通过Xshell连接远程主机,如下图

    

4.创建会话完成,点击连接,显示以下信息,代表连接成功。

5.(Xtfp无需登录。只需登录Xshell,在其目录下第二行找到,新建文件传输即可,快捷键CARL+ALT+F)

将打包好的.war文件和Tomcat上传至服务器。(注意Linux需要下载Linux版Tomcat),

并且需要把.war文件放在Tomcat的webapps目录下

6.连接数据库,出现以下内容登录数据库成功(添加数据库、JDK客户那边添加,具体为操作,网上可搜到这方面的资料作为参考)

7.部署成功,下面开始登录测试

7.1 首先使用主机IP : 端口号 测试Tomcat是否安装成功。

7.2 然后再使用(主机IP : 端口号 / 项目名称)查看项目是否部署成功。

这里如出现Tomcat安装成功,但项目未部署成功,请使用Linux命令进入tomcat下的logs目录使用命令ll查看目录,

然后使用命令  sz catalina.out 生成日志文件,查看出错问题,如下图

笔者在这里出现错误,数据库名和密码输入错误。

以上就是部署项目全部过程。希望对大家的学习有所帮助,也希望大家多多支持java学习网。

展开阅读
java学习网
回答:刘文栋

8小时1分钟前补充回答

Java基于WebMagic爬取某豆瓣电影评论的实现

Java WebMagic爬取

目的

搭建爬虫平台,爬取某豆瓣电影的评论信息。

准备

webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。webmagic的核心非常简单,但是覆盖爬虫的整个流程,也是很好的学习爬虫开发的材料。

下载WebMagic源码,或Maven导入,或Jar包方式导入。  码云地址:https://gitee.com/flashsword20/webmagic 

试运行

搭建好后打开项目, 在 us.codecraft.webmagic.processor.example 包下有几个可运行的例子,我们可以直接运行体验(BaiduBaikePageProcessor 百度百科的这个比较稳定)。

爬到结果说明没问题。

自定义爬虫

接下来我们自己编写一个爬取豆瓣评论的爬虫。

爬取地址:https://movie.douban.com/subject/35096844/reviews?start=0

F12进入开发者模式 分析前端页面

我们发现我们需要爬取的评论信息存放在 class=short-content的div 中。

创建一个豆瓣爬取的类DoubanPageProcessor如下:

package us.codecraft.webmagic.processor.example;
 
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
 
import java.util.List;
import java.util.Map;
 
/**
 * A simple PageProcessor.
 * 爬取豆瓣某电影的评论  爬取地址:https://movie.douban.com/subject/35096844/reviews?start=0
 *
 * @author code4crafter@gmail.com <br>
 * @since 0.1.0
 */
public class DoubanPageProcessor implements PageProcessor {
 
  private Site site;
 
  public DoubanPageProcessor(String urlPattern) {
    this.site = Site.me().setRetryTimes(3).setSleepTime(300); // 设置站点重试次数3 间隔300ms
  }
 
  @Override
  public void process(Page page) {
    page.putField("title", page.getHtml().xpath("//title/text()")); //爬取网页标题
//    page.putField("html", page.getHtml().toString()); //爬取整个页面的html
    page.putField("titleList", page.getHtml().css("div.short-content", "text").all()); // 我们要爬取的核心信息内容,获取方式与css选择器用法一样
//    page.putField("content", page.getHtml().smartContent());
  }
 
  @Override
  public Site getSite() {
    //settings
    return site;
  }
 
  public static void main(String[] args) {
 
    Spider spider = Spider.create(new DoubanPageProcessor("https://movie\\.douban\\.com\\d+"));
    ResultItems resultItems = spider.<ResultItems>get("https://movie.douban.com/subject/35096844/reviews?start=0");// 爬取并获得爬取结果
    Map<String, Object> map = resultItems.getAll();
    for (Map.Entry entry : map.entrySet()) {
      System.out.println(entry.getKey() + " : " + entry.getValue()); //打印爬取的所有内容
    }
    List<String> shortList = (List<String>) map.get("titleList");
    System.out.println("=====================分隔线===================\n短评如下:");
    for (int i = 0; i < shortList.size(); i++) {
      System.out.println(i + "、" + shortList.get(i).trim()); // 打印爬取的评论内容
    }
    spider.close();
  }
 
}

运行结果如下:

爬取成功。

到此这篇关于Java基于WebMagic爬取某豆瓣电影评论的实现的文章就介绍到这了,更多相关Java WebMagic爬取内容请搜索java学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持java学习网!

展开阅读

相关问题

更多回答

回答:阴怜菡 16小时23分钟前编辑补充

JavaWeb如何实现禁用浏览器缓存

JavaWeb禁用浏览器缓存: 这篇文章主要介绍了JavaWeb如何实现禁用浏览器缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.禁用浏览器缓存可以通过设置响应头的方式,有如下3个响应头可禁用浏览器缓存问题 1.Cache-control 2.pragma 3.expires 二.代码示例 package cn.xxx.Servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class FServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setHeader("Cache-control", "no-c……

回答:益鹤轩 8小时28分钟前编辑补充

Javaweb学习线路,Java编程开发

Javaweb学习线路,Java编程开发: 在我们通过JavaWeb知识的学习之后,你完全可以胜任JavaWeb开发工程师的工作,为之后的框架和整体项目的学习打下良好的基础,下面“www.javaxue.com”的小编为大家讲解具体的知识点。 一、前端技术 1.HTML 超文本标记语言,标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。(网站页面的布局,可以点开任意一个页面右键查看源代码,即可看到html的字样)超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。 学习内容:了解HTML语言,HTML语……

回答:韶和泰 18小时53分钟前编辑补充

Javaweb实现上传下载文件的多种方法

Javaweb实现上传下载文件: 在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为commons-fileupload依赖于commons-io这个包,所以需要下载这两个包commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar。 1、搭建环境 创建Web项目,将包导入到项目lib下 2、实现文件上传 (第一种上传的方法) 新建upload.jsp页面 %@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"htmlheadmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"titleupload file/title/headbody !--这里的%=requ……