jsp课程作业

    xiaoxiao2023-10-17  159

    1.在浏览器中输入”http://localhost:8080/ch10/index.jsp”进入主页,主页页面如下图所示:左边为树形菜单,右边为手机销售网主页页面图。

    代码:index.jsp

    <%@ page contentType="text/html;charset=GB2312" %>

    <HTML>

    <HEAD>

    <%@ include file="head.txt" %>

    <link rel="StyleSheet" href="dtree.css" type="text/css" />

    <script type="text/javascript" src="dtree.js"></script>

    </HEAD>

    <title>首页</title>

    <CENTER>

    <h1><font Size=4 color=blue>

             欢迎光临“智多星”智能手机销售网

    </font>

    </h1>

    </CENTER>

    <meta charset="UTF-8">

      <title>树形菜单</title>

    <BODY>

    <div class="dtree">

    <p><a href="javascript: d.openAll();">open all</a> | <a href="javascript: d.closeAll();">close all</a></p>

    <script type="text/javascript">

    <!--

    d = new dTree('d');

    d.add(0,-1,'My example tree');

    d.add(2,0,'用户');

    d.add(8,2,'注册','inputRegisterMess.jsp');

    d.add(9,2,'登录','login.jsp');

     

    d.add(3,0,'商品');

    d.add(10,3,'浏览手机','lookMobile.jsp');

    d.add(11,3,'查询手机','searchMobile.jsp');

    d.add(4,0,'我的');

    d.add(12,4,'购物车','lookShoppingCar.jsp');

    d.add(13,4,'订单','lookOrderForm.jsp');

    d.add(5,0,'退出','exitServl');

    d.add(6,0,'主页','indexx.jsp');

    document.write(d);

    //-->

    </script>

    </div>

    <CENTER>

    <img src="image/welcome.jpg" width=500 height=400 ></img>

    </CENTER>

    </BODY></HTML>

    2.树形菜单一共五个菜单:用户、商品、我的、退出和主页。

    ①用户:分两个子菜单,分别是注册和登录。

     

    注册页面:

     

    若输入格式有误、密码为空、两次输入密码不正确或用户名已存在数据库里,则注册失败。

    代码:HandleRegister.class

    package myservlet.control; import mybean.data.*; import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HandleRegister extends HttpServlet {    public void init(ServletConfig config) throws ServletException {        super.init(config);       try {  Class.forName("com.mysql.jdbc.Driver");       }       catch(Exception e){}     }    public String handleString(String s)    {   try{ byte bb[]=s.getBytes("iso-8859-1");             s=new String(bb);        }        catch(Exception ee){}         return s;      }    public  void  doPost(HttpServletRequest request,HttpServletResponse response)                          throws ServletException,IOException {       String uri="jdbc:mysql://127.0.0.1/mobileshop?"+                              "user=root&password=777777&characterEncoding=gb2312";       Connection con;        PreparedStatement sql;        Register userBean=new Register();  //创建的Javabean模型       request.setAttribute("userBean",userBean);       String logname=request.getParameter("logname").trim();       String password=request.getParameter("password").trim();       String again_password=request.getParameter("again_password").trim();       String phone=request.getParameter("phone").trim();       String address=request.getParameter("address").trim();       String realname=request.getParameter("realname").trim();       if(logname==null)            logname="";       if(password==null)            password="";       if(!password.equals(again_password)) {           userBean.setBackNews("两次密码不同,注册失败,");          RequestDispatcher dispatcher=           request.getRequestDispatcher("inputRegisterMess.jsp");          dispatcher.forward(request, response);//转发          return;       }       boolean isLD=true;       for(int i=0;i<logname.length();i++){           char c=logname.charAt(i);            if(!((c<='z'&&c>='a')||(c<='Z'&&c>='A')||(c<='9'&&c>='0')))               isLD=false;       }        boolean boo=logname.length()>0&&password.length()>0&&isLD;       String backNews="";       try{   con=DriverManager.getConnection(uri);              String insertCondition="INSERT INTO user VALUES (?,?,?,?,?)";              sql=con.prepareStatement(insertCondition);              if(boo)              { sql.setString(1,handleString(logname));                sql.setString(2,handleString(password));                sql.setString(3,handleString(phone));                sql.setString(4,handleString(address));                sql.setString(5,handleString(realname));                int m=sql.executeUpdate();                if(m!=0){                   backNews="注册成功";                   userBean.setBackNews(backNews);                   userBean.setLogname(logname);                   userBean.setPhone(handleString(phone));                   userBean.setAddress(handleString(address));                   userBean.setRealname(handleString(realname));                }              }              else {                  backNews="信息填写不完整或名字中有非法字符";                  userBean.setBackNews(backNews);                }              con.close();       }       catch(SQLException exp){              backNews="该会员名已被使用,请您更换名字"+exp;              userBean.setBackNews(backNews);        }       RequestDispatcher dispatcher=        request.getRequestDispatcher("inputRegisterMess.jsp");       dispatcher.forward(request, response);//转发    }    public  void  doGet(HttpServletRequest request,HttpServletResponse response)                         throws ServletException,IOException {       doPost(request,response);    } }  

     

    Register.class

    package mybean.data; public class Register{      String  logname="" , phone="",            address="",realname="",backNews="请输入信息";     public void setLogname(String logname){         this.logname=logname;    }    public String getLogname(){         return logname;    }    public void setPhone(String phone){         this.phone=phone;    }    public String getPhone(){         return phone;    }    public void setAddress(String address){         this.address=address;    }    public String getAddress(){         return address;    }    public void setRealname(String realname){         this.realname=realname;    }    public String getRealname(){         return realname;    }    public void setBackNews(String backNews){         this.backNews=backNews;    }    public String getBackNews(){         return backNews;    } }  

    登录页面:

    代码:Login.class

    package mybean.data; import java.util.*; public class Login {    String logname="",           backNews="未登录";    LinkedList<String> car; //用户的购物车    public Login() {       car = new LinkedList<String>();    }    public void setLogname(String logname){         this.logname = logname;    }    public String getLogname(){       return logname;    }    public void setBackNews(String s) {       backNews = s;    }     public String getBackNews(){       return backNews;    }    public LinkedList<String> getCar() {        return car;    } }  

    HandelLogin.class

    package myservlet.control; import mybean.data.*; import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class HandleLogin extends HttpServlet{    public void init(ServletConfig config) throws ServletException{       super.init(config);       try{             Class.forName("com.mysql.jdbc.Driver");       }       catch(Exception e){}     }    public String handleString(String s){       try{  byte bb[]=s.getBytes("iso-8859-1");             s=new String(bb);       }       catch(Exception ee){}        return s;      }    public void doPost(HttpServletRequest request,HttpServletResponse response)                          throws ServletException,IOException{       Connection con;        Statement sql;        String logname=request.getParameter("logname").trim(),       password=request.getParameter("password").trim();       logname=handleString(logname);       password=handleString(password);       String uri="jdbc:mysql://127.0.0.1/mobileshop?"+                              "user=root&password=777777&characterEncoding=gb2312";       boolean boo=(logname.length()>0)&&(password.length()>0);         try{             con=DriverManager.getConnection(uri);            String condition="select * from user where logname = '"+logname+             "' and password ='"+password+"'";            sql=con.createStatement();              if(boo){               ResultSet rs=sql.executeQuery(condition);               boolean m=rs.next();               if(m==true){                    //调用登录成功的方法:                   success(request,response,logname,password);                    RequestDispatcher dispatcher=                   request.getRequestDispatcher("login.jsp");//转发                   dispatcher.forward(request,response);               }               else{                   String backNews="您输入的用户名不存在,或密码不般配";                   //调用登录失败的方法:                   fail(request,response,logname,backNews);                }            }            else{                   String backNews="请输入用户名和密码";                   fail(request,response,logname,backNews);            }            con.close();       }       catch(SQLException exp){           String backNews=""+exp;           fail(request,response,logname,backNews);       }    }    public  void  doGet(HttpServletRequest request,HttpServletResponse response)                          throws ServletException,IOException{       doPost(request,response);    }    public void success(HttpServletRequest request,HttpServletResponse response                       ,String logname,String password) {       Login loginBean=null;       HttpSession session=request.getSession(true);       try{  loginBean=(Login)session.getAttribute("loginBean");             if(loginBean==null){                loginBean=new Login();  //创建新的数据模型                 session.setAttribute("loginBean",loginBean);                loginBean=(Login)session.getAttribute("loginBean");             }             String name =loginBean.getLogname();             if(name.equals(logname)) {                loginBean.setBackNews(logname+"已经登录了");                loginBean.setLogname(logname);             }             else {  //数据模型存储新的登录用户                 loginBean.setBackNews(logname+"登录成功");                 loginBean.setLogname(logname);             }       }       catch(Exception ee){             loginBean=new Login();               session.setAttribute("loginBean",loginBean);             loginBean.setBackNews(logname+"登录成功");             loginBean.setLogname(logname);       }    }     public void fail(HttpServletRequest request,HttpServletResponse response                       ,String logname,String backNews) {         response.setContentType("text/html;charset=GB2312");         try {          PrintWriter out=response.getWriter();          out.println("<html><body>");          out.println("<h2>"+logname+"登录反馈结果<br>"+backNews+"</h2>") ;          out.println("返回登录页面或主页<br>");          out.println("<a href =login.jsp>登录页面</a>");          out.println("<br><a href =index.jsp>主页</a>");          out.println("</body></html>

    ②商品:分为浏览和查询两个子菜单

     

    浏览功能:提交手机分类就能获得相应手机的信息

     

    例如:提交iPhone手机

     

    提交Android手机

    代码:LookMobile.jsp

    <%@ page contentType="text/html;charset=GB2312" %> <%@ page import="java.sql.*" %>

    <HTML> <HEAD> <%@ include file="head.txt" %>     <link rel="StyleSheet" href="dtree.css" type="text/css" />     <script type="text/javascript" src="dtree.js"></script> </HEAD>

    <meta charset="UTF-8">   <title>树形菜单</title>    <BODY bgcolor=cyan><font size=2>    <div align="center">

    <h2>选择某类手机<br>分页显示这类手机</h2> <%   try {  Class.forName("com.mysql.jdbc.Driver");       }       catch(Exception e){}        String uri="jdbc:mysql://127.0.0.1/mobileshop?"+                              "user=root&password=777777&characterEncoding=gb2312";       Connection con;        Statement sql;       ResultSet rs;       try {         con=DriverManager.getConnection(uri);         sql=con.createStatement();         //读取mobileClassify表,获得分类:           rs=sql.executeQuery("SELECT * FROM mobileClassify  ");         out.print("<form action='queryServlet' method ='post'>") ;         out.print("<select name='fenleiNumber'>") ;         while(rs.next()){            int id = rs.getInt(1);            String mobileCategory = rs.getString(2);            out.print("<option value ="+id+">"+mobileCategory+"</option>");         }           out.print("</select>");         out.print("<input type ='submit' value ='提交'>");           out.print("</form>");         con.close();      }      catch(SQLException e){          out.print(e);      } %> </div></font> <div class="dtree">

        <p><a href="javascript: d.openAll();">open all</a> | <a href="javascript: d.closeAll();">close all</a></p>

        <script type="text/javascript">         <!--

            d = new dTree('d');

            d.add(0,-1,'My example tree');         //d.add(2,0,'Node 2','example01.html');         //d.add(4,0,'Node 3','example01.html');         //d.add(5,3,'登录','example01.html');         //d.add(6,5,'Node 1.1.1.1','example01.html');         //d.add(7,0,'Node 4','example01.html');         d.add(2,0,'苹果手机','searchMobile.jsp');         d.add(3,0,'安卓手机','searchMobile.jsp');         d.add(4,0,'微软手机','searchMobile.jsp');         //d.add(5,0,'退出','exitServlet');         //d.add(6,0,'主页','index.jsp');         d.add(7,0,'Recycle Bin','example01.html','','','img/trash.gif');

            document.write(d);

            //-->     </script>

    </div> </BODY></HTML>  

    查询功能:输入关键词查询手机

    例如:选择名称搜索,输入“三星”提交

    选择手机版号查询,输入“A89S6”

     

    选择价格查询,输入“1000-4000”

    代码:SearchMobile.jsp

    <%@ page contentType="text/html;charset=GB2312" %> <HTML><HEAD><%@ include file="head.txt" %></HEAD> <BODY bgcolor=#55BBDD><font size=2> <div align="center"> <br>查询时可以输入手机的版本号或手机名称及价格。<br> 手机名称支持模糊查询。 <br>输入价格是在2个值之间的价格,格式是:价格1-价格2<br> 例如 3987-8976  <FORM action="searchByConditionServlet" Method="post" >    <br>输入查询信息:<Input type=text name="searchMess"><br>    <Input type =radio name="radio" value="mobile_version">手机版本号    <Input type =radio name="radio" value="mobile_name" checked="ok">手机名称    <Input type =radio name="radio" value="mobile_price">手机价格    <br><Input type=submit name="g" value="提交"> </Form> </div> </Font></BODY></HTML>  

    SearchByCondition.class

    package myservlet.control; import mybean.data.DataByPage; import com.sun.rowset.*; import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SearchByCondition extends HttpServlet{    CachedRowSetImpl rowSet=null;    public void init(ServletConfig config) throws ServletException{       super.init(config);       try {  Class.forName("com.mysql.jdbc.Driver");       }       catch(Exception e){}     }    public void doPost(HttpServletRequest request,HttpServletResponse response)                          throws ServletException,IOException{       request.setCharacterEncoding("gb2312");       String searchMess= request.getParameter("searchMess");       String radioMess= request.getParameter("radio");       if(searchMess==null||searchMess.length()==0) {          fail(request,response,"没有查询信息,无法查询");          return;       }       String condition="";       if(radioMess.equals("mobile_version")) {           condition =           "SELECT * FROM mobileForm where mobile_version ='"+searchMess+"'";       }       else if(radioMess.equals("mobile_name")) {           condition =           "SELECT * FROM mobileForm where mobile_name LIKE '%"+searchMess+"%'";        }       else if(radioMess.equals("mobile_price")) {           double max=0,min=0;           String regex = "[^0123456789.]";           String [] priceMess =searchMess.split(regex);           if(priceMess.length==1) {              max =min = Double.parseDouble(priceMess[0]);           }           else if(priceMess.length==2) {              min = Double.parseDouble(priceMess[0]);              max = Double.parseDouble(priceMess[1]);              if(max<min) {                 double t = max;                 max = min;                 min = t;              }           }           else {              fail(request,response,"输入的价格格式有错误");              return;            }           condition =  "SELECT * FROM mobileForm where "+           "mobile_price <= "+max+" AND mobile_price>="+min ;       }       HttpSession session=request.getSession(false);        Connection con=null;        DataByPage dataBean=null;       try{             dataBean=(DataByPage)session.getAttribute("dataBean");            if(dataBean==null){               dataBean=new DataByPage();  //创建JavaBean对象               session.setAttribute("dataBean",dataBean);            }       }       catch(Exception exp){            dataBean=new DataByPage();              session.setAttribute("dataBean",dataBean);       }        String uri = "jdbc:mysql://127.0.0.1/mobileshop?"+                    "user=root&password=777777&characterEncoding=gb2312";       try{             con=DriverManager.getConnection(uri);            Statement sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,                                                 ResultSet.CONCUR_READ_ONLY);            ResultSet rs=sql.executeQuery(condition);            rowSet=new CachedRowSetImpl();   //创建行集对象            rowSet.populate(rs);            dataBean.setRowSet(rowSet);      //行集数据存储在dataBean中              con.close();                     //关闭连接       }       catch(SQLException exp){}       response.sendRedirect("byPageShow.jsp");//重定向到byPageShow.jsp    }     public void doGet(HttpServletRequest request,               HttpServletResponse response)                          throws ServletException,IOException{        doPost(request,response);    }    public void fail(HttpServletRequest request,HttpServletResponse response,                       String backNews) {         response.setContentType("text/html;charset=GB2312");         try {          PrintWriter out=response.getWriter();          out.println("<html><body>");          out.println("<h2>"+backNews+"</h2>") ;          out.println("返回:");          out.println("<a href =searchMobile.jsp>查询手机</a>");          out.println("</body></html>

     

    ③我的:分为购物车和订单两个子菜单

     

    查看购物车

     

    代码:LookShoppingCar.jsp

    <%@ page contentType="text/html;charset=GB2312" %> <%@ page import="mybean.data.Login" %> <%@ page import="java.util.*" %> <jsp:useBean id="loginBean" class="mybean.data.Login" scope="session"/> <HTML><HEAD><%@ include file="head.txt" %></HEAD> <BODY bgcolor=yellow><font size=2> <div align="center"> <%  if(loginBean==null){         response.sendRedirect("login.jsp");//重定向到登录页面     }     else {        boolean b =loginBean.getLogname()==null||                   loginBean.getLogname().length()==0;        if(b)          response.sendRedirect("login.jsp");//重定向到登录页面     }     LinkedList car =loginBean.getCar();     if(car==null)       out.print("<h2> 购物车没有物品.</h2>");     else {        Iterator<String> iterator=car.iterator();        StringBuffer buyGoods = new StringBuffer();        int n=0;        double priceSum =0;        out.print("购物车中的物品:<table border=2>");        while(iterator.hasNext()) {            String goods=iterator.next();            String showGoods="";            n++;             //购车车物品的后缀是“#价格数字",比如“iPhone手机价格3989 #3989”            int index=goods.lastIndexOf("#");            if(index!=-1){               priceSum+=Double.parseDouble(goods.substring(index+1));               showGoods = goods.substring(0,index);            }            buyGoods.append(n+":"+showGoods);            String del="<form  action='deleteServlet' method = 'post'>"+                      "<input type ='hidden' name='delete' value= "+goods+">"+                      "<input type ='submit'  value='删除' ></form>";                       out.print("<tr><td>"+showGoods+"</td>");            out.print("<td>"+del+"</td></tr>");        }        out.print("</table>");        String orderForm = "<form action='buyServlet' method='post'>"+               " <input type ='hidden' name='buy' value= "+buyGoods+" >"+                " <input type ='hidden' name='price' value= "+priceSum+" >"+                          "<input type ='submit'  value='生成订单'></form>";        out.print(orderForm);      }  %> </div></font> </BODY></HTML>  

    查看订单

    代码:LookOrderForm

    <%@ page contentType="text/html;charset=GB2312" %> <jsp:useBean id="loginBean" class="mybean.data.Login" scope="session"/> <%@ page import="java.sql.*" %> <HTML><HEAD><%@ include file="head.txt" %></HEAD> <div align="center"> <%  if(loginBean==null){         response.sendRedirect("login.jsp");//重定向到登录页面     }     else {        boolean b =loginBean.getLogname()==null||                   loginBean.getLogname().length()==0;        if(b)          response.sendRedirect("login.jsp");//重定向到登录页面     }     Connection con;     Statement sql;      ResultSet rs;     try{  Class.forName("com.mysql.jdbc.Driver");     }     catch(Exception e){}     try { String uri= "jdbc:mysql://127.0.0.1/mobileshop";           String user="root";           String password="777777";           con=DriverManager.getConnection(uri,user,password);           sql=con.createStatement();           String cdn=          "SELECT id,mess,sum FROM orderform where logname= '"+loginBean.getLogname()+"'";           rs=sql.executeQuery(cdn);           out.print("<table border=2>");           out.print("<tr>");             out.print("<th width=100>"+"订单号");             out.print("<th width=100>"+"信息");             out.print("<th width=100>"+"价格");           out.print("</TR>");           while(rs.next()){             out.print("<tr>");               out.print("<td >"+rs.getString(1)+"</td>");                out.print("<td >"+rs.getString(2)+"</td>");               out.print("<td >"+rs.getString(3)+"</td>");               out.print("</tr>") ;            }           out.print("</table>");           con.close();     }     catch(SQLException e){            out.print(e);     }  %> </div"> </BODY></HTML>  

    ④退出:回到主页

    代码:HandelExit.class

    package myservlet.control; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HandleExit extends HttpServlet {       public void init(ServletConfig config) throws ServletException{       super.init(config);    }    public  void  doPost(HttpServletRequest request,HttpServletResponse response)                          throws ServletException,IOException {        HttpSession session=request.getSession(true);         session.invalidate();              //销毁用户的session对象        response.sendRedirect("index.jsp"); //返回主页     }    public  void  doGet(HttpServletRequest request,HttpServletResponse response)                          throws ServletException,IOException {       doPost(request,response);    } }  

    ⑤主页

     

    最新回复(0)