Web(二)

一、数据的传递--转发和重定向

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>

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的值

<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获取界面的多个值

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>

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>

三、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>

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>

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>

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;}  
}

5、创建1.jsp

<%@page 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>

6、创建2.jsp

<body>
   <%
    //重定向
     response.sendRedirect("3.jsp");
   %>
  </body>

7、创建3.jsp

<%@page import="cn.bdqn.bean.User"%>
  <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>

2、2.jsp

<%@page 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>

3、3.jsp

<%@page 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>

时间: 2024-08-10 16:12:17

Web(二)的相关文章

java web 二维码生成

pom支持: <!-- 二维码支持包 start--> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>com.google.zxing</

从桌面到 Web - 二十几天学 ASP.NETCore 1

这么多年一直从事桌面开发,一直没有时间好好学学  web 开发.感觉自己就像从石器时代走来的古代类人猿.由于工作的调整,现在终于有时间学习一下 Web 开发.出于对技术和框架的熟悉和继承,决定还是学习微软的 Web 开发框架(虽然我一直认为java 是一种比C# 更优秀的语言,社区的活力远高于 C#,想想 eclipse 还是算了吧). 微软的 Web 开发框架从 ASP,ASP.NET,ASP.NET MVC 一直到现在的 ASP.NET Core一路走来,坏消息是没有一个熟悉的,好消息是 A

java web(二) Tomcat数据源

一.数据源的产生 1.JDBC操作原理 (1) 加载数据库驱动程序(数据库驱动程序可通过classpath配置): Class.forName(); (2)通过DriverManager类取得数据库连接对象: Connection conNn = DriverManager.getConnection(); (3)通过Connection实例化PreparedStatement对象,编写SQL命令操作数据库: PreparedStatement ps = conn.prepareStatemen

web(二)---tornado模板

一. 接上两节, 修改index.py如下: 增加了/index.py/template和处理句柄. import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") class TemplateHandler(tornado.web.RequestHandler): def get(self)

Asp.Net QRCode创建WEB二维码时遇到的问题!

12 条评论 C# Qrcode是一个开源的二维码生成类库,项目地址是:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 今天手头一个项目需要添加动态生成二维码的功能,所以把这个类库稍微研究了一下,遇到了一个问题.在我重新编译QRCodeLib这个类库的时候报错! 报错信息为: 错误    7    “ThoughtWorks.QRCode.Properties.Resources”并不包含“GetResou

qt cef嵌入web(二)

在qt cef嵌入web文章中已经讲述了怎么把cef页面嵌入到qt程序中,但是这样并不完美,因为如果需要在多个窗口上创建cef浏览器部件的话,在 消息监听部分没有办法做区分多个浏览器事件,在这篇文章中我将会把上一篇相关文章中的程序结构稍作改动,以支持多个主浏览器窗口,主要是针对不同的浏览器 产生事件时分发给不同的监听者,说到这儿,有的读者应该就能想到了,监听者肯定是一个数组了,而且 个数和浏览器数目一样多.     在接着往一下看的时候,我默认大家都已经完成创建浏览器并可以成功监听事件.    

Java Web(二) Servlet中response、request乱码问题解决

三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身.博客坚持. --WH 一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, MyServlet是一个普通的Servlet,浏览器访问它时,使用get请求方式提交了一个name=小明的参数值,在doGet中获取该参数值,并且打印到控制台,发现出现乱码 出现乱码的原因: 前提知识:需要了解码表,编码,解码这三个名词的意思.我简单说一下常规的, 码表:是一种规则,用来让我们看得懂的

Skyline(6.x)-Web二次开发-多窗口对比

GitHub上获取源码 1.打开个3D窗口 一个页面加载多个TerraExplorer3DWindow和SGWorld等只有第一个能用(即使用iframe也是一样) 所以我决定打开两个新页面实现多窗口对比,然后我在<主页面>使用window.open打开了两个<新页面>,但这两个新页面使用SGWorld时居然在主页面(使用window.open的页面)产生了效果,感觉和以前的一个页面加载多个TerraExplorer3DWindow 和 SGWorld效果一样了!!! 然后经过测试

web 开发入门

一 :进入Web JAVASE:标准 - standard    JAVA 桌面程序 GUI   SOCKET JAVAEE:企业-浏览器控制   WEB 二:软件结构:      c/s :client-servlet  客户端 - 服务器 特点 :必须下载安装客户端程序 服务器升级,客户端也需要升级 B/s :broswer - servlet   浏览器端 -- 服务器 特点:需要安装客户端软件只需要浏览器即可 服务器升级,浏览器不需要升级 JAVAEE -- JAVA WEB 是用 B/

全面分析RHCE7(红帽认证工程师)考试题目之 ----WEB 服务器 篇

HTTP服务基础 独立Web服务 Web通信基本概念 基于B/S 服务端提供网页 浏览器下载并显示网页 Hyper Text Markup Language (HTML)超文本标记语言 Hyper Text Transfer Protocol(http)超文本传输协议 RHEL7中的Web服务 软件包:httpd 系统服务:httpd 提供的默认配置 Listen:监听地址:端口(80) ServerName:本站点注册的DNS名称 DcocumentRoot:网页根目录(/var/www/ht