JavaWeb之Request——转发功能的实现

点击上方“程序员大咖”,选择“置顶公众号”

关键时刻,第一时间送达!640?640?wx_fmt=gif


来源:java团长

https://mp.weixin.qq.com/s/4PQA5OTvEYTaJF3Yacd10w

程序员大咖整理发布,转载请联系作者获得授权


我们上次说了Response

今天我们来聊聊它的小伙伴Request

Request

1)HttpServletRequest 概述

在创建 Servlet 时会覆盖 service() 方法,或 doGet()/doPost(), 这些方法都有两个参数,一个为代表请求的 request 和代表响应 response。


service 方法中的 request 的类型是 ServletRequest,而 doGet/doPost 方法的request 的类型是 HttpServletRequest,HttpServletRequest 是 ServletRequest 的子接口,功能和方法更加强大,今天我们学习 HttpServletRequest。


因为 request 代表请求,所以我们可以通过该对象分别获得 Http 请求的请求行,请求头和请求体。

 

2)通过 request 获得请求行

获得客户端的请求方式:

String getMethod()


获得请求的资源:

String getRequestURI()

StringBuffer getRequestURL()

String getContextPath()

String getQueryString()

request.getRemoteAddr()


640?wx_fmt=png


640?wx_fmt=png

 

3)通过 request 获得请求头

long getDateHeader(String name)

String getHeader(String name)

Enumeration getHeaderNames()

Enumeration getHeaders(String name)

int getIntHeader(String name)


这里只展示最常用的两种方法~

640?wx_fmt=png


4)通过 request 获得请求体

请求体中的内容是通过 post 提交的请求参数,通过一下方法获得请求参数:

String getParameter(String name) 

String[] getParameterValues(String name)

Enumeration getParameterNames()

Map<String,String[]> getParameterMap()


640?wx_fmt=png


注意:

get 请求方式的请求参数 上述的方法一样可以获得

 

5)request 的其他功能

request 是一个域对象

request 对象也是一个存储数据的区域对象,所以也具有如下方法:

setAttribute(String name, Object o)

getAttribute(String name)

removeAttribute(String name)

 

request 完成请求转发

获得请求转发器----path 是转发的地址

RequestDispatcher getRequestDispatcher(String path)


通过转发器对象转发

requestDispathcer.forward(ServletRequest request, ServletResponse response)


转发就好像我们去找张三借钱,张三没有但是张三去找了别人弄到了钱。来借给我们,我们只知道我们是从张三哪里借到了钱,其他的就不晓得了。


640?wx_fmt=png

页面的请求路径还是在servlet1并没有改变~


转发与重定向的区别?

1)重定向两次请求,转发一次请求

2)重定向地址栏的地址变化,转发地址不变

3)重新定向可以访问外部网站,转发只能访问内部资源

4)转发的性能要优于重定向

640?wx_fmt=gif640?【点击成为源码大神】


▼点击「阅读原文」进入程序员商城

JavaWeb中,实现网站用户登录功能通常涉及到以下几个关键步骤: 1. **前端页面设计**:创建登录界面,包括用户名输入框(username)、密码输入框(password),以及登录按钮。可以使用HTML、CSS和JavaScript进行前端开发。 2. **后端服务器处理**:后端使用Java和Servlet或Spring MVC框架接收用户的登录请求。通常会涉及以下步骤: - 用户名和密码的验证:检查输入的用户名和密码是否匹配数据库中的记录。你可以使用JDBC连接数据库查询用户信息,也可以使用ORM框架如Hibernate或MyBatis。 - 使用Session或Cookie管理用户状态:如果验证通过,为用户创建一个Session,存储用户标识(通常是登录凭据的哈希值)或其他重要信息,这样后续请求可以识别用户。 3. **安全性考虑**:确保密码安全,一般会采用哈希+盐的方式加密存储,登录时对比哈希值。同时,防止SQL注入和XSS攻击。 4. **错误处理和反馈**:对输入错误或验证失败的情况,返回合适的错误消息给前端,并可能显示错误提示。 5. **登录/登出功能**:除了登录,还需要提供登出功能,清除Session或Cookie,结束用户会话。 6. **登录日志记录**:为了审计和安全,应该记录用户的登录尝试和结果。 相关问题: 1. 如何在JavaWeb中防止跨站脚本攻击(XSS)? 2. 什么是Session和Cookie的区别,它们在用户登录中的作用是什么? 3. 如何在Java中使用Spring Security来增强登录系统的安全性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值