一、数据的传递–转发和重定向
1、创建一个login.jsp页面
<body>
<%– action:我们需要提交的地址 method:请求的方式 –%>
<form action=”doMain.jsp” method=”get”>
<table>
<tr>
<td>用户名:</td>
<td><input type=”text” name=”userName”></td>
</tr>
<tr>
<td>密码:</td>
<td><input type=”password” name=”password”></td>
</tr>
<tr>
<td><input type=”submit” value=”登录”></td>
</tr>
</table>
</form>
</body>
<%– action:我们需要提交的地址 method:请求的方式 –%>
<form action=”doMain.jsp” method=”get”>
<table>
<tr>
<td>用户名:</td>
<td><input type=”text” name=”userName”></td>
</tr>
<tr>
<td>密码:</td>
<td><input type=”password” name=”password”></td>
</tr>
<tr>
<td><input type=”submit” value=”登录”></td>
</tr>
</table>
</form>
</body>
2、创建对应的处理页面doMain.jsp
<body>
<h1>登录成功</h1>
<%– login.jsp中的form表单 get方式请求乱码
01.治标不治本 不推荐使用
String userName=new String(name.getBytes(“iso-8859-1″),”utf-8”);
02.治本
在服务器中的conf文件夹中找到server.xml文件中的Connector节点中 新增属性
URIEncoding=”UTF-8″
–%>
<%
//根据login.jsp页面 name的属性值 获取 value
//post乱码 解决 是不是每个页面都需要设置 请求编码格式??? 后面 我们会用Filter
request.setCharacterEncoding(“utf-8”); //请求的编码
response.setCharacterEncoding(“utf-8”); //响应的编码
String name=request.getParameter(“userName”); //获取用户名
String pwd=request.getParameter(“password”); //获取密码
%>
<%– 就是想把login页面的值 传递给last.jsp –%>
<%
out.print(“用户名:”+name);
out.print(“密码:”+pwd);
//把从login页面拿到的值 存储到了 request作用域中了
request.setAttribute(“userName”, name);
request.setAttribute(“password”, pwd);
//转发到了last.jsp 携带了数据 last页面能取得数据
//request.getRequestDispatcher(“last.jsp”).forward(request, response);
//重定向last.jsp 数据都会丢失! last页面不能取得数据
response.sendRedirect(“last.jsp”);
%>
<%– get请求 –%>
<a href=”last.jsp?userName=小黑黑2&password=123456″>跳转到最后一个界面</a>
</body>
3、创建last.jsp看能不能获取login.jsp的值
<h1>登录成功</h1>
<%– login.jsp中的form表单 get方式请求乱码
01.治标不治本 不推荐使用
String userName=new String(name.getBytes(“iso-8859-1″),”utf-8”);
02.治本
在服务器中的conf文件夹中找到server.xml文件中的Connector节点中 新增属性
URIEncoding=”UTF-8″
–%>
<%
//根据login.jsp页面 name的属性值 获取 value
//post乱码 解决 是不是每个页面都需要设置 请求编码格式??? 后面 我们会用Filter
request.setCharacterEncoding(“utf-8”); //请求的编码
response.setCharacterEncoding(“utf-8”); //响应的编码
String name=request.getParameter(“userName”); //获取用户名
String pwd=request.getParameter(“password”); //获取密码
%>
<%– 就是想把login页面的值 传递给last.jsp –%>
<%
out.print(“用户名:”+name);
out.print(“密码:”+pwd);
//把从login页面拿到的值 存储到了 request作用域中了
request.setAttribute(“userName”, name);
request.setAttribute(“password”, pwd);
//转发到了last.jsp 携带了数据 last页面能取得数据
//request.getRequestDispatcher(“last.jsp”).forward(request, response);
//重定向last.jsp 数据都会丢失! last页面不能取得数据
response.sendRedirect(“last.jsp”);
%>
<%– get请求 –%>
<a href=”last.jsp?userName=小黑黑2&password=123456″>跳转到最后一个界面</a>
</body>
3、创建last.jsp看能不能获取login.jsp的值
<body>
<h1>last.jsp</h1>
<%
//在doMain中使用了转发后 能直接获取 login页面的值
String name=request.getParameter(“userName”); //获取用户名
String pwd=request.getParameter(“password”); //获取密码
out.print(“用户名:”+name);
out.print(“密码:”+pwd);
%>
<%
//从request.getAttribute()取值
request.setCharacterEncoding(“utf-8”); //请求的编码
String name1=(String)request.getAttribute(“userName”);//获取用户名
String pwd2=(String)request.getAttribute(“password”); //获取密码
out.print(“用户名:”+name1);
out.print(“密码:”+pwd2);
%>
</body>
二、通过request获取界面的多个值
<h1>last.jsp</h1>
<%
//在doMain中使用了转发后 能直接获取 login页面的值
String name=request.getParameter(“userName”); //获取用户名
String pwd=request.getParameter(“password”); //获取密码
out.print(“用户名:”+name);
out.print(“密码:”+pwd);
%>
<%
//从request.getAttribute()取值
request.setCharacterEncoding(“utf-8”); //请求的编码
String name1=(String)request.getAttribute(“userName”);//获取用户名
String pwd2=(String)request.getAttribute(“password”); //获取密码
out.print(“用户名:”+name1);
out.print(“密码:”+pwd2);
%>
</body>
二、通过request获取界面的多个值
5、创建request1.jsp页面
<form action=”request2.jsp” method=”post”>
<input type=”checkbox” name=”box” value=”别玩手机”>别玩手机”
<input type=”checkbox” name=”box” value=”就玩手机”>就玩手机”
<input type=”checkbox” name=”box” value=”还玩手机”>还玩手机”
<input type=”checkbox” name=”box” value=”真玩手机”>真玩手机”
<input type=”checkbox” name=”box” value=”玩手机”>玩手机”>
<button type=”submit”>提交</button>
</form>
<input type=”checkbox” name=”box” value=”别玩手机”>别玩手机”
<input type=”checkbox” name=”box” value=”就玩手机”>就玩手机”
<input type=”checkbox” name=”box” value=”还玩手机”>还玩手机”
<input type=”checkbox” name=”box” value=”真玩手机”>真玩手机”
<input type=”checkbox” name=”box” value=”玩手机”>玩手机”>
<button type=”submit”>提交</button>
</form>
6、创建request2.jsp页面获取request1.jsp的值
<body>
<%
request.setCharacterEncoding(“utf-8”);
//获取选中复选框的值
String [] boxs=request.getParameterValues(“box”);
//首先进行判断 必须先判断非空
if(boxs!=null&&boxs.length!=0){
for(String box:boxs){
out.print(box+”<br/>”);
}
}else{
//重定向到request1界面
response.sendRedirect(“request1.jsp”);
}
%>
<h1>request对象常用的方法</h1>
获取http请求中使用的方法名称 <%=request.getMethod() %><br/>
获取http请求中调用servlet的url部分 <%=request.getServletPath() %><br/>
获取http请求中MIME类型 <%=request.getContentType() %><br/>
获取请求中服务器主机名称 <%=request.getServerName() %><br/>
获取请求中服务器的端口号名称 <%=request.getServerPort() %><br/>
获取请求中服务器的ip地址 <%=request.getRemoteAddr()%><br/>
获取请求中服务器的ip地址 <%=request.getRemoteHost()%><br/>
获取请求中使用的协议 <%=request.getScheme() %><br/>
</body>
<%
request.setCharacterEncoding(“utf-8”);
//获取选中复选框的值
String [] boxs=request.getParameterValues(“box”);
//首先进行判断 必须先判断非空
if(boxs!=null&&boxs.length!=0){
for(String box:boxs){
out.print(box+”<br/>”);
}
}else{
//重定向到request1界面
response.sendRedirect(“request1.jsp”);
}
%>
<h1>request对象常用的方法</h1>
获取http请求中使用的方法名称 <%=request.getMethod() %><br/>
获取http请求中调用servlet的url部分 <%=request.getServletPath() %><br/>
获取http请求中MIME类型 <%=request.getContentType() %><br/>
获取请求中服务器主机名称 <%=request.getServerName() %><br/>
获取请求中服务器的端口号名称 <%=request.getServerPort() %><br/>
获取请求中服务器的ip地址 <%=request.getRemoteAddr()%><br/>
获取请求中服务器的ip地址 <%=request.getRemoteHost()%><br/>
获取请求中使用的协议 <%=request.getScheme() %><br/>
</body>
三、session
1、创建session1jsp
<body>
<form action=”session2.jsp” method=”post”>
<table><tr> <td>用户名:</td>
<td><input type=”text” name=”userName”></td></tr>
<tr> <td>密码:</td>
<td><input type=”password” name=”password”></td> </tr>
<tr><td><input type=”submit” value=”登录”></td></tr> </table>
</form> </body>
<form action=”session2.jsp” method=”post”>
<table><tr> <td>用户名:</td>
<td><input type=”text” name=”userName”></td></tr>
<tr> <td>密码:</td>
<td><input type=”password” name=”password”></td> </tr>
<tr><td><input type=”submit” value=”登录”></td></tr> </table>
</form> </body>
2、创建session2.jsp
<body>
<%
request.setCharacterEncoding(“utf-8”);
//获取session1.jsp的信息
String name= request.getParameter(“userName”);
String pwd= request.getParameter(“password”);
//把信息保存到session
session.setAttribute(“sessionName”, name);
session.setAttribute(“sessionPwd”, pwd);
//把信息保存到request
request.setAttribute(“requestName”, name);
request.setAttribute(“requestPwd”, pwd);
//重定向 request作用域的值消失 session呢???
response.sendRedirect(“session3.jsp”);
%>
<form action=”session3.jsp” method=”post”>
<table>
<tr> <td>银行卡密码:</td>
<td><input type=”text” name=”card”></td></tr>
<tr><td><input type=”submit” value=”登录”></td></tr>
</table></form></body>
<%
request.setCharacterEncoding(“utf-8”);
//获取session1.jsp的信息
String name= request.getParameter(“userName”);
String pwd= request.getParameter(“password”);
//把信息保存到session
session.setAttribute(“sessionName”, name);
session.setAttribute(“sessionPwd”, pwd);
//把信息保存到request
request.setAttribute(“requestName”, name);
request.setAttribute(“requestPwd”, pwd);
//重定向 request作用域的值消失 session呢???
response.sendRedirect(“session3.jsp”);
%>
<form action=”session3.jsp” method=”post”>
<table>
<tr> <td>银行卡密码:</td>
<td><input type=”text” name=”card”></td></tr>
<tr><td><input type=”submit” value=”登录”></td></tr>
</table></form></body>
3、创建session3.jsp
<body>
<%
request.setCharacterEncoding(“utf-8”);
//获取银行卡密码
String card= request.getParameter(“card”);
//清空session中指定的属性
session.removeAttribute(“sessionPwd”); //删除了密码
//从session中获取数据
String name=(String)session.getAttribute(“sessionName”);
String pwd=(String)session.getAttribute(“sessionPwd”);
//从request中获取数据
String rName=(String)session.getAttribute(“requestName”);
String rPwd=(String)session.getAttribute(“requestPwd”);
//让session失效 以秒为单位
session.setMaxInactiveInterval(3);
%>
<%– 设置session的失效
01.在tomcat中的conf文件夹下面的web.xml 分钟 计算的 默认30分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
02.项目中的web.xml中也可以设置 自定义 项目中的为准 分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
03.session.setMaxInactiveInterval(s) 当前的会话时间 不是整个web
–%>
session取得的数据:<br/>
您的用户名是:<%=name %><br/>
您的密码是:<%=pwd %><br/>
您的银行卡密码是:<%=card %><br/>
<hr/>
request取得的数据:<br/>
您的用户名是:<%=rName %><br/>
您的密码是:<%=rPwd %><br/></body>
<%
request.setCharacterEncoding(“utf-8”);
//获取银行卡密码
String card= request.getParameter(“card”);
//清空session中指定的属性
session.removeAttribute(“sessionPwd”); //删除了密码
//从session中获取数据
String name=(String)session.getAttribute(“sessionName”);
String pwd=(String)session.getAttribute(“sessionPwd”);
//从request中获取数据
String rName=(String)session.getAttribute(“requestName”);
String rPwd=(String)session.getAttribute(“requestPwd”);
//让session失效 以秒为单位
session.setMaxInactiveInterval(3);
%>
<%– 设置session的失效
01.在tomcat中的conf文件夹下面的web.xml 分钟 计算的 默认30分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
02.项目中的web.xml中也可以设置 自定义 项目中的为准 分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
03.session.setMaxInactiveInterval(s) 当前的会话时间 不是整个web
–%>
session取得的数据:<br/>
您的用户名是:<%=name %><br/>
您的密码是:<%=pwd %><br/>
您的银行卡密码是:<%=card %><br/>
<hr/>
request取得的数据:<br/>
您的用户名是:<%=rName %><br/>
您的密码是:<%=rPwd %><br/></body>
4、创建一个User类
public class User {
private String name;
private String pwd;
@Override
public String toString() {
return “User [name=” + name + “, pwd=” + pwd + “]”; }
public User() {
super(); }
public User(String name, String pwd) {
super();
this.name = name;
this.pwd = pwd; }
public String getName() {
return name; }
public void setName(String name) {
this.name = name; }
public String getPwd() {
return pwd;}
public void setPwd(String pwd) {
this.pwd = pwd;}
}
private String name;
private String pwd;
@Override
public String toString() {
return “User [name=” + name + “, pwd=” + pwd + “]”; }
public User() {
super(); }
public User(String name, String pwd) {
super();
this.name = name;
this.pwd = pwd; }
public String getName() {
return name; }
public void setName(String name) {
this.name = name; }
public String getPwd() {
return pwd;}
public void setPwd(String pwd) {
this.pwd = pwd;}
}
5、创建1.jsp
<[email protected] import=”cn.bdqn.bean.User”%>
<body>
<%
//创建一个User对象
User user=new User(“admin”,”123456″);
//把对象放进session作用域
session.setAttribute(“user”, user);
%>
<a href=”session/2.jsp”>跳转第二个界面</a>
</body>
<body>
<%
//创建一个User对象
User user=new User(“admin”,”123456″);
//把对象放进session作用域
session.setAttribute(“user”, user);
%>
<a href=”session/2.jsp”>跳转第二个界面</a>
</body>
6、创建2.jsp
<body>
<%
//重定向
response.sendRedirect(“3.jsp”);
%>
</body>
<%
//重定向
response.sendRedirect(“3.jsp”);
%>
</body>
7、创建3.jsp
<[email protected] import=”cn.bdqn.bean.User”%>
<body>
<%
User user=(User)session.getAttribute(“user”);
out.print(user.getName());
%>
<%=session.getAttribute(“user”)%>
</body>
<body>
<%
User user=(User)session.getAttribute(“user”);
out.print(user.getName());
%>
<%=session.getAttribute(“user”)%>
</body>
四、cookie
1、1.jsp
<body>
<form action=”cookie/2.jsp” method=”post”>
姓名:<input type=”text” name=”userName”/>
<button type=”submit”>登录</button>
</form>
<%
//获取第二个界面的信息
String msg=(String)request.getAttribute(“msg”);
//有可能Null
if(msg!=null){
out.print(msg);
}
%>
</body>
<form action=”cookie/2.jsp” method=”post”>
姓名:<input type=”text” name=”userName”/>
<button type=”submit”>登录</button>
</form>
<%
//获取第二个界面的信息
String msg=(String)request.getAttribute(“msg”);
//有可能Null
if(msg!=null){
out.print(msg);
}
%>
</body>
2、2.jsp
<[email protected] import=”java.net.URLEncoder”%>
<body>
<%
request.setCharacterEncoding(“utf-8”); //解决post请求乱码问题
//获取登陆的用户名
String name =request.getParameter(“userName”);
//判断用户名是不是admin
if(name.equalsIgnoreCase(“admin”)){
//在返回到第一个界面时 给一个提示
request.setAttribute(“msg”, “不允许使用admin登录!”);
//转发
request.getRequestDispatcher(“1.jsp”).forward(request, response);
}else{
//成功! 跳转到下个界面,并把用户名传递下去
//01.创建cookie 如果有中文 必须需要设置编码格式
Cookie cookie=new Cookie(“user”,URLEncoder.encode(name,”utf-8″));
//02.如果想给cookie设置有效期 必须在增加之前
cookie.setMaxAge(20);
//03.给响应新增cookie
response.addCookie(cookie);
//重定向
response.sendRedirect(“3.jsp”);
}
%>
</body>
<body>
<%
request.setCharacterEncoding(“utf-8”); //解决post请求乱码问题
//获取登陆的用户名
String name =request.getParameter(“userName”);
//判断用户名是不是admin
if(name.equalsIgnoreCase(“admin”)){
//在返回到第一个界面时 给一个提示
request.setAttribute(“msg”, “不允许使用admin登录!”);
//转发
request.getRequestDispatcher(“1.jsp”).forward(request, response);
}else{
//成功! 跳转到下个界面,并把用户名传递下去
//01.创建cookie 如果有中文 必须需要设置编码格式
Cookie cookie=new Cookie(“user”,URLEncoder.encode(name,”utf-8″));
//02.如果想给cookie设置有效期 必须在增加之前
cookie.setMaxAge(20);
//03.给响应新增cookie
response.addCookie(cookie);
//重定向
response.sendRedirect(“3.jsp”);
}
%>
</body>
3、3.jsp
<[email protected] import=”java.net.URLDecoder”%>
<body>
<%
//获取第二个界面的cookie
Cookie [] cookies= request.getCookies();
String name=””;
//遍历数组 获取我们想要的 user
for(Cookie cookie:cookies){
if(cookie.getName().equals(“user”)){ //找到了
//进行中文的解码
name=URLDecoder.decode(cookie.getValue(), “utf-8”);
out.print(“用户名====》”+name);
}
}
%>
</body>
<body>
<%
//获取第二个界面的cookie
Cookie [] cookies= request.getCookies();
String name=””;
//遍历数组 获取我们想要的 user
for(Cookie cookie:cookies){
if(cookie.getName().equals(“user”)){ //找到了
//进行中文的解码
name=URLDecoder.decode(cookie.getValue(), “utf-8”);
out.print(“用户名====》”+name);
}
}
%>
</body>
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/12180.html