在JavaWeb当中获取表单参数是很重要的一个步骤,下面我通过使用get/setAttribute来获取表单参数来分析getAttribute和getParameter之间的区别以及加强对javaweb的学习。
一、getParameter和getAttribute之间的区别
- request.getParameter() 是通过get/post等方法相当于一个http请求来获取数据,从客户端传到服务器端,且返回的数据是一个String类型,而getAttribute() 是通过web容器内进行流动,且返回的是一个object对象而不是一个String类型的值。
- 有setAttribute方法但是没有setParameter方法。
- 而不同页面间传值使用request.setAttribute()时,只会从1.jsp到2.jsp传递,之后这个request就会失去它的作用范围(request请求范围),而使用session.setAttribute()会在一个会话中始终保有这个值(注意作用范围)。
例:
当文件1和文件2是链接关系
jsp1
<form name="form1" method="post" action="2.jsp">
请输入用户姓名:<input type="text" name="username">
<input type="submit" name="Submit" value="提交">
</form>
------------
jsp2
可以直接使用getParameter来获取表单中的元素值
< % String username=request.getParameter("username"); %>
当时转发关系时
<%
String username=request.getParameter("username");
request.setAttribute("username",username); //需要先设置attribute值
%>
<jsp:forward page="2.jsp" />
在2.jsp中通过getAttribute()方法获得用户名字:
<% String username=(String)request.getAttribute("username"); %>
//然后在一个request中就可以使用getAttribute来实现获取参数。
二、实现过程
首页核心代码,login.html
<body>
<form action="check.jsp" method="post">
用户名:<input type="text" name="username" />
密码:<input type="password" name="passwd" />
<input type="submit" value="登录" />
</form>
</body>
判断用户名及密码的正确性,check.jsp
<body>
<%
String name = request.getParameter("username");
String pass = request.getParameter("passwd");
request.setAttribute("user",name);
request.setAttribute("passwd",pass);
String user = (String)request.getAttribute("user");
String passwd = (String)request.getAttribute("passwd");
%>
<%
if(user.equals("lei") && passwd.equals("123")){
%>
<jsp:forward page="suc.jsp"></jsp:forward>
<%
}else{
%>
<jsp:forward page="err.jsp"></jsp:forward>
<%} %>
</body>
以及一个成功页面和失败页面
三、实验结果截图
end