0

点赞

0

回复

1919

浏览

如何配置web.xml文件?

Servlet本身只是 HttpServlet 抽象类的子类,通过重写 doGet() , doPost() 等方法来确定它响应HTTP请求的处理逻辑。在Servlet 3.0版本以后,在Servlet类上表明 @WebServlet 注解可以定义它处理的URL模式——Servlet容器在加载Servlet时会扫描到注解中的信息,并将URL模式与该Servlet的映射关系记录下来,在接收HTTP请求以后根据这张映射关系表进行请求分发处理。这样做的好处是: 单一职责——明确Servlet本身的职责,而将URL的映射关系交给容器管理 复用——Servlet本身和URL映射关系解耦,它可以被引入任意Web应用中匹配不同的URL模式(注解不会影响Servlet本身的功能) WEB.XML文件 在Servlet 3.0之前,Servlet和URL的映射关系必须在 WEB INF/web.xml 文件中定义: ...

java-webdeployservlet

0

点赞

0

回复

1008

浏览

JSP/Servlet的页面重定向

页面重定向 在用户登录并通过服务器验证以后,JSP会渲染一段HTML内容返回给浏览器,提示已经登录成功。但这样做存在一些问题: 用户体验不佳,用户成功登录后肯定需要去其他页面。如果登录成功在系统的任何一个页面都应该在导航栏中看到用户信息,如果进入一个提示信息页面,还需要一次点击才能到达目标页面。 在登录成功页面刷新,此时浏览器会提示是否重新提交数据,因为这是一个POST请求,如果点击了确定意味着将之前的数据再次提交一遍,这不是我们所希望的。 上述问题对于任意表单提交都是存在的,包括文章创建表单。 POST/REDIRECT/GET模式 上一节中表单提交的用户体验非常不友好,为了解决这个问题,一种叫做 Post/Redirect/GET https://en.wikipedia.org/wiki/Post/Redirect/Get 的模式被提出并广泛应用在Web程序开发中。和传统的表单提交方法不同,这种模式在POST请求完成后,会重定向(HTTP状态码302)到另外一个页面。这样相当于浏览器重新加载了一个页面(使用GET请求),此时用户无论如何刷新浏览器,都是刷新当前GET请求对应的页面而不再是重复提交一次表单。下面是一个用户提交订单到服务器的过程描述: SERVLET重定向 页面重定向相当于返回HTTP状态吗302以及一个重定向地址到浏览器,在Servlet中可以使用 HttpServletResponse sendRedirect() 方法来完成。例如在登录成功后,可以跳转到该用户的博客首页: @WebServlet("/account/login")...

java-webservlethttpform

0

点赞

0

回复

1345

浏览

Filter——拦截请求保护页面安全

在处理创建文章表单的Servlet中,创建了一个 Post 对象,它的成员变量 User 被设置为当前Session中的 user 属性。从业务逻辑的角度来说,那么在创建文章时必须保证当前用户已经登录,对于没有登录的用户,不应该让它看到创建文章的表单页面。 为了实现这样的需求,我们可以直接在Servlet中编写类似逻辑: User user = (User) req.getSession().getAttribute("user");...

java-webfilterservlet

3

点赞

2

回复

1353

浏览

管理用户状态——Cookie与Session

利用COOKIE跟踪用户状态 博客系统由多个功能(页面)组成: 1. 首页——包含博客功能简介、用户列表 2. 用户博客列表——包含某一用户的文章列表 3. 文章详细页面——包含某一篇文章的标题、详细内容、创建时间等信息 4. 创建文章页面——包含文章标题、内容的表单 在创建文章时,除了标题和内容,还需要知道是谁创建的这篇文章,当然我们不能够在表单中添加一个输入框让用户输入自己是谁——因为用户的身份很有可能被伪造。一个办法是在每一个页面被访问之前,我们要求用户输入在网站注册时输入的用户名/密码进行验证,如果验证通过才可以访问对应的页面。 HTTP基本认证 https://zh.wikipedia.org/wiki/HTTP%E5%9F%BA%E6%9C%AC%E8%AE%A4%E8%AF%81 正好可以完成这样的功能,可是这样实在是太麻烦了,没访问一个页面都需要用户进行输入。 我们知道HTTP协议本身是无状态的,也就是说任何完全一致的请求都将会得到完全相同的返回。但是我们可以认为的在HTTP请求中定义状态。 Cookie http://zh.wikipedia.org/wiki/Cookie 是由客户端保存的小型文本文件,其内容为一系列的键值对,在浏览器访问同一个域名的不同页面时,会在HTTP请求中附上Cookie。 Cookie可以保存在内存中(关闭浏览器即消失),也可以保存在硬盘中(到达过期时间后消失)。另外,Cookie也是一个比较古老的东西,与JavaScript同样由网景公司发明,现已被标准化为RFC2109。 我们正是通过Cookie的这些特性来实现用户状态的保存的,每当用户访问一个网站时,服务器程序会分配给它一个唯一的id,这个id就是设置在Cookie中的,以打开浏览器第一次访问 http://tianmaying.com http://tianmaying.com 为例,因为是打开浏览器后第一次访问,所以请求头中不会有任何网站相关的Cookie存在,这时服务器会随机分配的一个字符串作为用户的id并放在Cookie中: Set Cookie:JSESSIONID=9074327855952DA4A296B67685523812; Path=/; HttpOnly...

sessionjava-webcookie

0

点赞

0

回复

888

浏览

Web表单处理实例:博客注册用户

我们已经了解了Web表单处理的关键概念,接下来我们就以博客注册用户表单为例来回顾应用我们之前学过的知识。 存储用户信息 到目前为止,我们尚未学习任何数据存储的知识,在本节中我们将用户注册的信息存放在内存中(即Java程序中的某个变量)。首先看看用户注册表单需要填写的信息: 在博客系统中,用户信息包括: 用户名——用户的唯一标识符,每一个用户的用户名必须不同 密码——用户登录的密码凭证 电子邮箱 用户博客的标题 用户博客的描述、简介 用户头像URL 根据此可以设计 User 类来表示用户对象: public class User {...

formjava-webJSP

0

点赞

0

回复

856

浏览

JSP指令与动作

概述 JSP指令 在JSP中,指令(directive)控制JSP编译器生成Servlet的行为,它能够设置JSP页面相关的属性以及控制生成HTML内容。之前我们已经接触过不少指令,例如: charset=utf 8" pageEncoding="utf 8"% ...

JSPjava-web

新建主题 记录代码

学员动态

  • z**x评论了:安装的时候出现这个界...
  • 天码君回复了c**h在课程中的问题:欢迎来到天码营学习,...
  • z**x在课程中提出了问题:老师我的电脑是64位...
  • 天码君回复了s**n在课程中的问题:欢迎来到天码营学习,...
  • 三年添加了笔记:这里你注意两点即可:...
  • 三年添加了笔记:分析我们的业务场景,...
  • z**x添加了笔记:将希望输出信息放到S...
  • 天码君回复了工**武在课程中的问题:欢迎来到天码营学习,...
  • R.D完成了课程的作业
  • z**x在课程中提出了问题:老师我把Java换成...
  • f**e向课程作业中提交了代码
  • 三年在课程中提出了问题:请老师解答下这课作业...
  • l**o向课程作业中提交了代码
  • 三年添加了笔记:关于MyBatis本...
  • w**3回复了z**x在课程中的问题:百度找一下如何彻底删...
  • D**n向课程作业中提交了代码
  • w**3评论了z**x在课程中的作业:...
  • l**o向课程作业中提交了代码
  • 天码君回复了X**E在课程中的问题:欢迎来到天码营学习,...
  • L**z向课程作业中提交了代码
  • w**3评论了D**n在课程中的作业:看清楚要求,参数表要...
  • L**z向课程作业中提交了代码
  • 天码君回复了h**2在课程中的问题:欢迎来到天码营学习,...
  • J**y向课程作业中提交了代码
  • w**3回复了z**x在课程中的问题:软件安装问题每个人碰...
  • 白**2向课程作业中提交了代码
  • L**z向课程作业中提交了代码
  • 三年添加了笔记:需要修改MyBati...
  • 工**武在课程中提出了问题:请问为什么课程的视频...
  • 天码君回复了D**G在课程中的问题:欢迎来到天码营学习,...
  • X**E向课程作业中提交了代码
  • J**y向课程作业中提交了代码
  • 天码君回复了D**n在课程中的问题:欢迎来到天码营学习,...
  • w**3回复了z**x在课程中的问题:重新安装对应版本的e...
  • w**3评论了z**x在课程中的作业:对的,一般是在包下的...
  • L**z在课程中提出了问题:好的那我还是装回我的...
  • z**x在课程作业中回复了老师:想请问下老师这行代码...
  • 天码君评论了三年在课程中的作业:你的代码应该是可以跑...
  • h**2向课程作业中提交了代码
  • c**6向课程作业中提交了代码
  • h**6向课程作业中提交了代码
  • c**u评论了:13课实战弄不明...
  • D**n向课程作业中提交了代码
  • 天码君回复了A**i在课程中的问题:欢迎来到天码营学习,...
  • D**n向课程作业中提交了代码
  • 三年在课程作业中回复了老师:老师,我的代码中报这...
  • A**i向课程作业中提交了代码
  • z**x在课程作业中回复了老师:所以说,是要先创建包...
  • w**3回复了L**z在课程中的问题:嗯,毕竟几乎公司和学...
  • z**x在课程中提出了问题:请问下老师,安装的时...
  • w**3评论了z**x在课程中的作业:这是一个类的主体部分...
  • D**G向课程作业中提交了代码
  • z**x在课程中提出了问题:哇,我换成课程里的压...
  • D**n在课程作业中回复了老师:这道题是什么意思? ...
  • z**x在课程作业中回复了老师:入门到精通这本我今天...
  • w**3回复了L**z在课程中的问题:你如果要用java1...
  • w**3回复了z**x在课程中的问题:可以设置字体 htt...
  • L**z向课程作业中提交了代码
  • w**3回复了z**x在课程中的问题:安装java8 不要...
  • z**x在课程作业中回复了老师:所以说包的作用就像是...
  • L**z向课程作业中提交了代码
  • 三年添加了笔记:接下来引入MyBat...
  • 白**2向课程作业中提交了代码
  • w**3评论了z**x在课程中的作业:这个是根据你的jav...
  • L**z在课程中提出了问题:老师,刚才我换了一个...
  • 天码君回复了R.D在课程中的问题:欢迎来到天码营学习,...
  • z**x在课程中提出了问题:老师,为什么它那个中...
  • 天码君回复了L**z在课程中的问题:欢迎来到天码营学习,...
  • MAFT向课程作业中提交了代码
  • c**u向课程作业中提交了代码
  • D**n向课程作业中提交了代码
  • z**x在课程中提出了问题:对应版本?我的JDK...
  • z**x在课程中提出了问题:好的老师,那版本11...
  • A**i向课程作业中提交了代码
  • A**i向课程作业中提交了代码
  • z**x添加了笔记:public sta...
  • L**z在课程中提出了问题
  • 天码君回复了A**i在课程中的问题:欢迎来到天码营学习,...
  • A**i完成了课程的作业
  • J**y向课程作业中提交了代码
  • J**y向课程作业中提交了代码
  • 天码君回复了z**x在课程中的问题:欢迎来到天码营学习,...
  • h**2向课程作业中提交了代码
  • A**i向课程作业中提交了代码
  • 三年添加了笔记:先来定义Mapper...
反馈意见