Servlet+JSP+MySQL实现简单课表查询

经过一个慢慢渐进的过程,基本上完成了一个简单的课表查询,其中这几周的博客就是按着这个过程来写的、接下来我们按这个过程去把这些功能逐一去实现起来,若有不太懂的可以去翻看之前的博客,欢迎留言。

JSP部分

JSP只是做一个简单的显示页面,即把从数据所拿到的数据把它显示出来,这里并没有用得上多大的作用。接下来在代码中解释每个语句的作用。

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-  8"%>
  <%@ page contentType="text/html; charset=UTF-8"  %>
  <%@ page import="dao.User"%>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01   Transitional//EN">
  <html>
    <head>
          <title>课表查询</title>
    </head>

  <body>
    <%
             <%--ServletConfig对象的getServletContext()方法得到servlet上下文的引用--%>
              ServletContext context = this.getServletContext();
                 <%--创建一个集合--%>
               List<User>TL=new ArrayList<User>();
                         <%--获取servlet上下文中封装的对象--%>
               TL=(List<User>)context.getAttribute("CLASSLIST");
              User u=new User();
     %>
     <%--用表单来打印课表信息--%>
<table border="2" align="center" width="90%" cellpadding="2" cellspacing="2">
    <caption><h2><%u.getValuesemeter();%>学期<%u.getValueclasscode(); %>我的课表</h2></caption>
    <thead>             
            <td>学期</td>
            <td>班级</td>
            <td>节次</td>
            <td>星期一</td>
            <td>星期二</td>
            <td>星期三</td>
            <td>星期四</td>
            <td>星期五</td>
            <td>星期六</td>
            <td>星期日</td>                                
    </thead>
    <tbody>
    <%for(User L:TL){ %>
        <%--循环显示课表内容 --%>
        <tr>
        <td><%=L.getsemester() %></td>
        <td><%=L.getclassCode() %></td>
        <td><%=L.getSection() %></td>
        <td><%=L.getOne() %></td>
        <td><%=L.getTwo() %></td>
        <td><%=L.getThree() %></td>
        <td><%=L.getFour() %></td>
        <td><%=L.getFive() %></td>
        <td><%=L.getSix()%></td>
        <td><%=L.getSeven()%></td>
    
        </tr>
    <%} %>
    </tbody>
    </table>
    </body>
</html>

Servlet部分

Servlet主要是接收表单传来的数据,把数据传给业务层进行处理,最后转发到JSP把数据显示出来。那么在servlet中最重要的就是如何去获得前端所输入的值了,这就得涉及到getParameterNames()方法了,getParameterNames()方法将会一次获取表单name的值并返回一个枚举类型集合。通过其枚举方法就能把这些值给一次获取出来,再把这些封装到一个类中去就完成任务了。

  import java.io.IOException;
  import java.io.PrintWriter;
  import java.util.ArrayList;
  import java.util.Enumeration;
  import java.util.List;

  import javax.servlet.ServletContext;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import UserSerlevet.userService;
  import dao.User;

public class RegisterSerlvet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
               this.doPost(request, response);

}


public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
      int i=0;
      User user=new User();
      String []registetrUser=new String[2];
      request.setCharacterEncoding("UTF-8");
      Enumeration<String> enums = request.getParameterNames();
      while(enums.hasMoreElements()){
            String name = enums.nextElement();
            String value = request.getParameter(name);
            registetrUser[i]=value;
            i++;
      }
      i=0;
      user.setValuesemeter(registetrUser[0]);
      user.setValueclasscode(registetrUser[1]);
      userService userservice=new userService();  
      try {
          List<User>classlist=new ArrayList<User>();
             classlist=userservice.getWebMethods(user.getValueclasscode(),user.getValuesemeter());
          ServletContext context = this.getServletContext();
            context.setAttribute("CLASSLIST",classlist);
        
        request.setAttribute("CLASSLIST", classlist);
        
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
  }
      

      }
      
                //把CLASSLIST封装到显示页面              
     response.sendRedirect(request.getContextPath()+"/Timetable.jsp"); 
    
    }

  }

JDBC部分

JDBC主要是为了连接数据库的Dao层,从基本的注册驱动,连接驱动等一步步获取数据库内容。

   package dao;
   import java.sql.Connection;
  import java.sql.PreparedStatement;
  import java.sql.ResultSet;
  import java.sql.Statement;
  import java.util.ArrayList;
  import java.util.List;
  import com.mysql.fabric.xmlrpc.base.Array;


  public class classUserDao{

public List<User> finAcess(String className,String semester) throws Exception {
     Connection conn = null;
    PreparedStatement prep =null;
     List<User>list=new ArrayList<User>();
     ResultSet rs =null;

String sql="select * from  timetable inner join class on class.classCode=timetable.classCode where className=? and semester=?";
     try {
         

           conn=JdbcUtil.getConnection();
           prep =conn.prepareStatement(sql)
           prep.setString(1, className);
           prep.setString(2, semester);
           rs =prep.executeQuery();
          while(rs.next()){   
             String classCode=rs.getString("classCode");
             String semest=rs.getString("semester");
             int section=rs.getInt("section");
             String one=rs.getString("one");
             String two=rs.getString("two");
             String three=rs.getString("three");
             String four=rs.getString("four");
             String five=rs.getString("five");
             String six=rs.getString("six");
             String seven=rs.getString("seven");
             User user =new User(classCode,semest,section,one,two,three,four,five,six,seven);
             list.add(user);
          }
        
     }
     catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException(e);
     
     }finally
     {
         JdbcUtil.close(rs);
         JdbcUtil.close(prep); 
         JdbcUtil.close(conn);
         
     }
   return list;
}   
 
}

业务层部分

业务层主要是处理数据用的,把前端的数据传给Dao层,Dao层获取数据库数据后把数据交给业务层。

    package UserSerlevet;
    import java.util.ArrayList;
    import java.util.List;
    import dao.User;
    import dao.classUserDao;

public class userService {


public List<User> getWebMethods(String seme,String code) throws Exception  {
     classUserDao ud=new classUserDao();
     List<User>classlist=new ArrayList<User>();
       String classCode=null;
       String semester=null;
       User reUser=new User();
          classCode=seme;
          semester=code;
        classlist= ud.finAcess(classCode,semester);//把值带回       
    return classlist;
}


}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,785评论 0 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,565评论 18 399
  • (一)Java web部分 1.Servlet和jsp页面过滤器Filter的作用及配置 【参考答案】 过滤器是一...
    独云阅读 3,316评论 0 11
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,729评论 6 342
  • 陇首云飞,江边日晚,烟波满目凭阑久。一望关河萧索,千里清秋,忍凝眸。杏杏神京,盈盈仙子,别来锦字终难偶。断雁无凭,...
    否否阅读 488评论 0 1