JSP内置对象response和session的初步实践

212 阅读4分钟
原文链接: bingyishow.top

前言

这个本来是三个实验题然后我把它合成了两个,但是代码质量不是很好,本篇文章能提供的只是思路上的参照,第二个实验的代码有问题待解决。

实验一

编写两个JSP页面分别为login.jsp和checklogin.jsp,login.jsp页面提供一个表单,分别在两个文本框输入用户名和密码,表单提交至checklogin.jsp页面,checklogin.jsp页面实现登录验证。要求如果用户名或密码为空则重定向至login页面重新填写用户登录信息,如果用户名或密码都不为空,再checklogin页面进行正常地登录验证,并将该页面的浏览方式动态设置为word。Session内置对象实现授权页面或避免用户重复登录功能!

代码

  • login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <html>

    <head>
        <title>用户登录</title>
    </head>

    <body>
        <br/>
        <form action="checklogin.jsp" method="POST">
            <table border="1" width="500px" align="center">
                <th colspan="2">用户登录</th>
                <tr>
                    <td>用户名</td>
                    <td><input type="text" name="names" /></td>
                </tr>
                <tr>
                    <td>密码</td>
                    <td> <input type="password" name="password" /></td>
                </tr>
                <tr>
                    <td><input type="submit" value="提交" /></td>
                    <td><input type="reset" value="重置" /></td>
                </tr>

                <tr>

                    <td colspan="2">
                        <input type="button" value="重新生成session" onclick="<% session.invalidate();%> window.location.reload();" />
                        <%
                            String id=session.getId();
                            out.println("<br/>session为:"+ id);
                            %></td>

                </tr>
            </table>
        </form>
        <%
          String names=request.getParameter("names");
          if (names==null) {
          names="";
        }
        else
        session.setAttribute("names",names);
        %>
    </body>

    </html>

  • checklogin.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <html>

    <head></head>

    <body>
        <%

    String user = request.getParameter("names");
    String password = request.getParameter("password");
    String id=session.getId();
    if (user.equals("computer")) {
      if (password.equals("jsp")) {

        if (session.isNew()){
          out.print("Success!");
          response.setContentType("application/msword;charst=UTF-8");
          response.setHeader("Content-Disposition","attachment;filename=Test.doc");
          response.getWriter().println(new String(new byte[] { (byte) 0xEF, (byte) 0xBB,(byte) 0xBF }));
       } else {
        out.print("chongfu");
       }

       }
      else
      {
        response.sendRedirect("login.jsp");
      }

    }//第一层判断结束
    else
    {
        response.sendRedirect("login.jsp");
    }
%>

    </body>

    </html>

实验二

Session内置对象实现简单购物车

注意:本代码还有问题没有解决,中文会乱码。单独运行c.jsp不能运行。

代码

  • a.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <html>

    <head>
        <br>输入姓名:<a href="a.jsp">确认姓名页面</a>
        <br>选择图书:<a href="b.jsp">选择图书页面</a>
        <br>结账:<a href="c.jsp">结账页面</a>
    </head>

    <body>
        <font size=3>
            <p>输入姓名</p>
            <form action="" method="POST" name="form">
                <input type="text" name="form" />
                <input type="submit" value="确定" name="submit" />
            </form>
            <% String name = request.getParameter("name");
            if(name == null)
            name = "";
            else
            session.setAttribute("name",name); //将用户的名字存入session
            %>
        </font>
    </body>

    </html>

  • b.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <html>

    <head>
        <br>输入姓名:<a href="a.jsp">确认姓名页面</a>
        <br>选择图书:<a href="b.jsp">选择图书页面</a>
        <br>结账:<a href="c.jsp">结账页面</a>
    </head>

    <body>
        <font size=2>
            <form action="" method="post" name="form">
                <input type="checkbox" name="choice" value="Java教程32.5元">Java教程32.5元
                <input type="checkbox" name="choice" value="数据库原理23元">数据库原理23元<br>
                <input type="checkbox" name="choice" value="操作系统35元">操作系统35元
                <input type="checkbox" name="choice" value="C语言教程28.6元">C语言教程28.6元<br>
                <input type="submit" value="提交" name="submit">
            </form>
            <% String book[]=request.getParameterValues("choice");
            if(book!=null){
                StringBuffer str = new StringBuffer();
                for(int k = 0;k<book.length;k++){
                    str.append(book[k] + "<br>");
                }
                session.setAttribute("book",str);
            }
            %>
        </font>
    </body>

    </html>

  • c.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

    <html>

    <head>
        <br>输入姓名:<a href="a.jsp">确认姓名页面</a>
        <br>选择图书:<a href="b.jsp">选择图书页面</a>
        <br>结账:<a href="c.jsp">结账页面</a>
    </head>

    <body>
        <%! public String handleStr(String s){
            try {
                byte[] bb = s.getBytes("iso-8859-1");
                s = new String(bb);
            }
            catch(Exception exp){}
            return s;
        }
        %>
            <font size=2>
                <% String personName = (String) session.getAttribute("name");
            StringBuffer bookMess = null;
            if(personName == null || personName.length() == 0){
                out.println("到名字输入页面输入姓名");
            }
            else{
                bookMess = (StringBuffer)session.getAttribute("book");
            }
            %>

                    <%   
                    String buyBook = new String(bookMess); //这里总是报错,问题还没有解决。
            double sum = 0;
            String [] price = buyBook.split("[^0123456789.]" );
            if(price!=null){
                for(String item:price)
                try{
                    sum += Double.parseDouble(item);
                }
                catch(NumberFormatException exp){}
            }
            %>
                        <br>
                        <%= handleStr(personName) %>购书信息:<br>
                            <%= handleStr(buyBook) %><br> 总价格:
                                <%= sum %>
            </font>
    </body>

    </html>