㈠ 在java中request对象有什么作用
接收请求端对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
它是HttpServletRequest类的实例。
㈡ java如何在一个普通的类中获取request对象
你是指你的 web 项目中使用到一个工具性的类,它的形参中没有 HttpRequest 或 HttpSession 参数?
如果是这样的话,我们需要使用一个 ThreadLocal 变量,我们把当前 request 的变量绑定到里面,在一个 request 请求的生命周期内我们在方法调用的各个更深的层次中都可以直接使用它而不需要在每个方法中都传递这个 request 参数,保存在某个地方就容易导致因为多个请求共用同一个实例而出问题,所有 context 相关的变量不保存在任何业务类相关并且可能被多线程共用的对象实例中才是保证不会出现线程安全问题的途径。
例如,这个例子中我们只要把web.xml中配置好 ContextFilter 后它就会自动在请求开始时绑定一个 context,结束后自动销毁,在这中间的任何时刻我们都可以通过 MyWebContext.getCurrentContext() 得到我们的 HttpServletRequest 实例和其它相关的 context 变量:
//MyWebContext记录当前Request的所有context变量。因为servlet是一个请求绑定一个线程的,我们用ThreadLocal不会有线程安全问题。
classMyWebContext{
=newThreadLocal();
//拿出当前线程绑定的context
(){
return(MyWebContext)contexts.get();
}
(){
returnnewMyWebContext();
}
//绑定一个context到当前线程
publicstaticvoidsetContext(MyWebContextcontext){
contexts.set(context);
}
publicstaticvoidclearContext(){
contexts.set(null);
}
privateHttpRequestrequest;
publicvoidsetRequest(HttpRequestrequest){
this.request=request;
}
publicHttpRequestgetRequest(){
returnthis.request;
}
}
{
publicvoiddoFilter(ServletRequest,SerlvetResponse,FilterChainchain){
//创建并绑定我们的context
MyWebContextcontext=MyWebContext.createContext();
context.setRequest(request);
MyWebContext.setContext(context);
try{
chain.doFilter(request,response);
}finally{
//销毁context
MyWebContext.clearContext();
}
}
}
{
(){
//其它方法只要它是工作在servlet请求调用键中间的某个时刻,它就肯定能拿到Filter绑定进去的Request,这样我们就不必要在每次方法调用中都额外地传递一个HttpRequest参数,当调用层次很深时这能明显减少复杂性。
MyWebContextcontex=MyWebContext.getCurrentContext();
HttpRequestrequest=context.getRequest();
=...;
HttpSessionsession=request.getSession(false);
...
}
}
㈢ java中session和request的区别
request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。request是用户请求访问的当前组件,以及和当前web组件共享同一用户请求的web组件。如:被请求的jsp页面和该页面用<include>指令包含的页面以及<forward>标记包含的其它jsp页面;
Session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSession的invalidate()方法)。存放在HttpSession对象中 ,同一个http会话中的web组件共享它。
㈣ Java 怎么在一个普通类中获取到Request对象
首先,向你确认你所谓的普通类就是POJO吗,如果是是无法获取Request对象的。
不过,可以使用参数传递的方式。
Request对象,即ServletRequest,隶属于javax包下的,需要实现其HttpServletRequest接口才能获取到Request对象
故在普通java类中是无法获取到request对象的
望参考
㈤ java中Request对象的主要方法有哪些
答:setAttribute(Stringname,Object):设置名字为name的request的参数值
getAttribute(Stringname):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式
getContentLength():返回请求的Body的长度
getHeader(Stringname):获得HTTP协议定义的文件头信息
getHeaders(Stringname):返回指定名字的requestHeader的所有值,结果是一个枚举的实例
getHeaderNames():返回所以requestHeader的名字,结果是一个枚举的实例
getInputStream():返回请求的输入流,用于获得请求中的数据
getMethod():获得客户端向服务器端传送数据的方法
getParameter(Stringname):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(Stringname):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Booleancreate]):返回和请求相关Session
getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(Stringname):删除请求中的一个属性
㈥ java中怎么创建一个Request对象
如果你学了struts2
可以用下面的方法获得session
public
class
BaseAction
implements
SessionAware,
Constants
{
protected
Map
session;
public
void
setSession(Map
session)
{
this.session
=
session;
}
}
然后继承这个类
㈦ request对象只能通过getparameter方法取得参数对吗
不对。request对象可以通过多种方法取得参数,包括getParameter()、getParameterMap()、getParameterValues()等。在Java Servlet中,request对象是一个包含了客户端请求信息的对象,包括客户端发送的请求参数。因此,request对象可以通过上述方法来取得客户端发送的请求参数。
㈧ app访问Java后端,没有request对象吗
将数据放在request对象中,然后在另一个页面拿到这个数据即可。
前端和后端都会遵照一套数据模型定义。前段在开发的时候,会利用模拟数据进行开发。前端在开发的时候就不需要依赖后端的API。这些模拟数据一般来自于内存数据库,就是使用真正的API接口来获取数据,只不过这个数据不是从远程服务器上获取,而是通过本地的内存数据库来获取。