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

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.树形菜单一共五个菜单:用户、商品、我的、退出和主页。

jsp课程作业

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

jsp课程作业

 

注册页面:

jsp课程作业

jsp课程作业

 

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

代码: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;
   }
}
 

登录页面:

jsp课程作业

代码: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>

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

jsp课程作业

 

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

jsp课程作业

 

例如:提交iPhone手机

jsp课程作业

 

提交Android手机

jsp课程作业

代码: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>
 

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

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

jsp课程作业

jsp课程作业

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

jsp课程作业

jsp课程作业

 

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

jsp课程作业

jsp课程作业

代码: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>

 

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

jsp课程作业

 

查看购物车

 

jsp课程作业

代码: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>
 

查看订单

jsp课程作业

代码: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);
   }
}
 

⑤主页

 

相关文章:

  • 2021-11-15
  • 2021-06-22
  • 2021-09-04
  • 2021-09-02
  • 2021-10-15
  • 2021-07-15
猜你喜欢
  • 2021-11-26
  • 2021-09-07
  • 2021-12-16
  • 2022-02-24
相关资源
相似解决方案