在本文中,我们将为您详细介绍JSP中的session.getAttribute的相关知识,并且为您解答关于提供空值的疑问,此外,我们还会提供一些关于3.11、@SessionAttribute和@Re
在本文中,我们将为您详细介绍JSP中的session.getAttribute的相关知识,并且为您解答关于提供空值的疑问,此外,我们还会提供一些关于3.11、@SessionAttribute 和 @RequestAttribute、Java getAttribute()和getParameter()之间的区别、JSP Response.getAttributeNames()方法:获取session对象的所有属性名称、JSP Response.removeAttribute()方法:移除指定的session属性的有用信息。
本文目录一览:- JSP中的session.getAttribute()提供空值(jsp session.getattribute)
- 3.11、@SessionAttribute 和 @RequestAttribute
- Java getAttribute()和getParameter()之间的区别
- JSP Response.getAttributeNames()方法:获取session对象的所有属性名称
- JSP Response.removeAttribute()方法:移除指定的session属性
JSP中的session.getAttribute()提供空值(jsp session.getattribute)
这是我在JSP中的HTML代码
<select name="urlsel" id="selurl"><option value="eng" name="eng"/><option value="mat" name="mat"/><option value="sci" name="sci"/></select><input type="submit" value="submit option" onsubmit="return validate()"/><% String opt=session.getAttribute("urlsel"); System.out.println("\n selected optiion is:+opt)%>
上面的JSP代码为 opt* 赋予了 空 值。我在JSP中尝试过仍为 null 。request.getParameter("urlsel");
***
我想要选择的选项值答案 session.getAttribute("urlsel");
我怎么才能得到它?我想要在我的servlet和servlet中使用session.getAttribute("urlsel");
但却为null的该值。
请帮我。
答案1
小编典典为了从 会话 或 请求中 获取属性,在执行此操作之前,必须在代码中的某个位置设置/添加属性(即 先 设置属性, 然后才能获取它们)。
因此,简短的答案是: 在您的情况下 ,请使用而不是getAttribute(String name)
在 会话 或 请求 对象上使用request.getParameter(String name)
。
您要在此处完成的工作是检索使用HTML表单传递的 参数 。为了做到这一点,使用getParameter(Stringname)
方法如下:
String selectValue = request.getParameter("urlsel")
传统上,使用HTTP形式传递的值是在Servlet中检索的 ,然后您可以对它们进行任何处理。
正如我在您的示例中看到的那样,您正在使用这种 PHP 方法。尽管这不是Java
Web应用程序开发中最常用的方法,但是您可以使用表达式语言从_参数_隐式对象中检索在JSP中使用HTML表单传递的
参数(应避免在JSP中使用scriptlet)。
简单的例子
这是一个JSP页面的简单示例,展示了如何检索使用同一页面中的HTML 表单 元素提交的参数(如您的示例):
test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head> <title>Test Page</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body> <h1>Test Page</h1> <form action="" method="post"> <p>Choose some course</p> <select name="course"> <option value="English" name="eng">English</option> <option value="Math" name="mat">Math</option> <option value="Computer Science" name="sci">Computer Science</option> </select> <p><input type="submit" value="Pass data" /></p> </form> <hr /> <h2>Testing passed parameters</h2> <p>Passed "course" parameter = <span>${param.course}</span></p></body></html>
请注意 EL :的用法${param.course}
,其中“ param
”是隐式对象之一的名称,而“
course ”是 select 元素的名称,其值是通过提交HTML表单传递的。
聚苯乙烯
您可能会发现阅读一些有关servlet和JSP的教程很有用。这是一个受欢迎的教程,提供了很好的解释和易于理解的示例:
3.11、@SessionAttribute 和 @RequestAttribute
本篇示例见这个项目的 mvc 分支下的 SesAndReqAttrController.java
① 使用@SessionAttribute来访问预先存在的全局会话属性
如果你需要访问预先存在的、以全局方式管理的会话属性的话,比如在控制器之外(比如通过过滤器)可能或不可能存在在一个方法参数上使用注解@SessionAttribute
:
/**
* 在处理请求 /helloWorld/jump 的时候,会在会话中添加一个 sessionStr 属性。
* <p/>
* 这里可以通过@SessionAttribute 获取到
*/
@RequestMapping("/sesAttr")
public String handleSessionAttr(@SessionAttribute(value = "sessionStr") String sessionStr, Model model)
{
System.out.println("--> sessionStr : " + sessionStr);
model.addAttribute("sth", sessionStr);
return "/examples/targets/test1";
}
为了使用这些需要添加或移除会话属性的情况,考虑注入org.springframework.web.context.request.WebRequest
或javax.servlet.http.HttpSession
到一个控制器方法中。
对于暂存在会话中的用作控制器工作流一部分的模型属性,要像“使用 @SessionAttributes 存储模型属性到请求共享的HTTP会话”一节中描述的那样使用SessionAttributes。
② 使用@RequestAttribute访问请求属性
就像@SessionAttribute
一样,注解@RequestAttribute
可以被用于访问由过滤器或拦截器创建的、预先存在的请求属性:
@RequestMapping("/reqAttr")
public String handle(@RequestAttribute("reqStr") String str, Model model)
{
System.out.println("--> reqStr : " + str);
model.addAttribute("sth", str);
return "/examples/targets/test1";
}
可以使用下面的过滤器进行测试:
@WebFilter(filterName = "myFilter", description = "测试过滤器", urlPatterns = { "/*" })
public class MyFilter implements Filter
{
@Override
public void init(FilterConfig filterConfig) throws ServletException
{}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
System.out.println("--> MyFilter Do.");
request.setAttribute("reqStr", "万万没想到,啦啦啦啦啦!");
chain.doFilter(request, response);
}
@Override
public void destroy()
{}
}
Java getAttribute()和getParameter()之间的区别
如何解决Java getAttribute()和getParameter()之间的区别?
getParameter()
返回http请求参数。那些是从客户端传递到服务器的。例如http://example.com/servlet?parameter=1
。只能退货String
getAttribute()
仅用于服务器端使用-你在请求中填充可以在同一请求中使用的属性。例如,你在Servlet中设置了一个属性,并从JSP中读取了该属性。可以用于任何对象,而不仅仅是字符串。
解决方法
getAttribute()
和类getParameter()
内的方法有什么区别HttpServletRequest
?
JSP Response.getAttributeNames()方法:获取session对象的所有属性名称
该方法用于获取 session 对象中存储的每一个属性对象的名称,其结果为一个枚举类的对象。语法:
getAttributeNames()
返回值:保存 session 对象的所有属性名称的枚举对象。示例
获取 session 对象的所有属性名称,关键代码如下:<% session.setAttribute("user","lzw"); session.setAttribute("age","27"); session.setAttribute("addr","Jilin"); Enumeration names = session.getAttributeNames(); while(names.hasMoreElements()){ out.println(names.nextElement()+"<br>"); } %>
JSP Response.removeAttribute()方法:移除指定的session属性
该方法用于删除指定的 session 属性。语法:
removeAttribute(String name)
参数说明:- name:要移除的属性的名称。
示例
移除 session 中的属性,关键代码如下:<% session.removeAttribute("user"); %>
今天关于JSP中的session.getAttribute和提供空值的分享就到这里,希望大家有所收获,若想了解更多关于3.11、@SessionAttribute 和 @RequestAttribute、Java getAttribute()和getParameter()之间的区别、JSP Response.getAttributeNames()方法:获取session对象的所有属性名称、JSP Response.removeAttribute()方法:移除指定的session属性等相关知识,可以在本站进行查询。
本文标签: