八、各种查询的Servlet

查询全部信息

TimeManageServlet.java

package servlet;
import java.io.IOException;  
import java.util.List;  
import java.util.*;
import java.io.*;
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  

import bean.AddMessageBean;
import dao.AddMessageDao;


public class TimeManageServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;  
	  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
        this.doPost(req, resp);  
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {
    	req.setCharacterEncoding("UTF-8"); 
    	AddMessageDao dao = new AddMessageDao();
    	List<AddMessageBean> TimeManage = dao.findAll();  
        //保存查询的班级信息    
        req.setAttribute("TimeManage", TimeManage);
        //转发请求  
        req.getRequestDispatcher("/TimeManage.jsp").forward(req, resp);  
    }
}

----------------------------------------------------

按学号查询

SearchID.java

package servlet;
import java.io.*;
import java.sql.*;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import dao.AddMessageDao;
import bean.AddMessageBean;

public class SearchID extends HttpServlet{
	private static final long serialVersionUID = 1L;  
	  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
        this.doPost(req, resp);  
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {
    	req.setCharacterEncoding("UTF-8"); 
    	resp.setCharacterEncoding("UTF-8");
//    	PrintWriter out = resp.getWriter();
    	String num=req.getParameter("num");
    	AddMessageDao dao = new AddMessageDao();
    	//System.out.println(num);
    	String sql = "select * from stumessage where num ='";
        sql += num + "'";
//        out.println(sql);
    	List<AddMessageBean> SearchID = dao.SearchID(num);  
        //保存查询的班级信息    
        req.setAttribute("SearchID", SearchID);
        //转发请求  
        req.getRequestDispatcher("/SearchID.jsp").forward(req, resp);  
    }
}

--------------------------------------------------

按学院查询

SearchIns.java

package servlet;

import java.io.*;
import java.sql.*;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import dao.AddMessageDao;
import bean.AddMessageBean;
public class SearchIns extends HttpServlet {
	private static final long serialVersionUID = 1L;  
	  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
        this.doPost(req, resp);  
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {
    	req.setCharacterEncoding("UTF-8"); 
    	resp.setCharacterEncoding("UTF-8");
//    	PrintWriter out = resp.getWriter();
    	String college=req.getParameter("college");
    	AddMessageDao dao = new AddMessageDao();
 //   	System.out.println(num);
    	String sql = "select * from stumessage where college ='";
        sql += college + "'";
//        out.println(sql);
    	List<AddMessageBean> SearchIns = dao.SearchIns(college);  
        //保存查询的班级信息    
        req.setAttribute("SearchIns", SearchIns);
        //转发请求  
        req.getRequestDispatcher("/SearchIns.jsp").forward(req, resp);  
    }
}

-----------------------------------------------------------

按贫困等级查询

SearchLevel.java

package servlet;
import java.io.*;
import java.sql.*;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import dao.AddMessageDao;
import bean.AddMessageBean;
public class SearchLevel extends HttpServlet{
	private static final long serialVersionUID = 1L;  
	  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
        this.doPost(req, resp);  
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {
    	req.setCharacterEncoding("UTF-8"); 
    	resp.setCharacterEncoding("UTF-8");
//    	PrintWriter out = resp.getWriter();
    	String poor=req.getParameter("poor");
    	AddMessageDao dao = new AddMessageDao();
    	//System.out.println(num);
    	String sql = "select * from stumessage where poor ='";
        sql += poor + "'";
//        out.println(sql);
    	List<AddMessageBean> SearchLevel = dao.SearchLevel(poor);  
        //保存查询的班级信息    
        req.setAttribute("SearchLevel", SearchLevel);
        //转发请求  
        req.getRequestDispatcher("/SearchLevel.jsp").forward(req, resp);  
    }
}

-------------------------------

按姓名查询

SearchName.java

package servlet;
import java.io.*;
import java.sql.*;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import dao.AddMessageDao;
import bean.AddMessageBean;
public class SearchName extends HttpServlet{
	private static final long serialVersionUID = 1L;  
	  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
        this.doPost(req, resp);  
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {
    	//设置编码,防止乱码
    	req.setCharacterEncoding("UTF-8"); 
    	resp.setCharacterEncoding("UTF-8");
    	//将JSP中name="name"的值赋给Sring类型的name
    	String name=req.getParameter("name");
    	//新建一个AddMessageDao
    	AddMessageDao dao = new AddMessageDao();
    	String sql = "select * from stumessage where name ='";
        sql += name + "'";
        //创建一个列表,调用dao的SearchName
    	List<AddMessageBean> SearchName = dao.SearchName(name);  
        //保存查询的信息用setAttribute将值给SearchName    
        req.setAttribute("SearchName", SearchName);
        //转发请求  
        req.getRequestDispatcher("/SearchName.jsp").forward(req, resp);  
    }
}

-----------------------------------------------------------------

按专业查询

SearchPro.java

package servlet;
import java.io.*;
import java.sql.*;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import dao.AddMessageDao;
import bean.AddMessageBean;
public class SearchPro extends HttpServlet{
	private static final long serialVersionUID = 1L;  
	  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
        this.doPost(req, resp);  
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {
    	req.setCharacterEncoding("UTF-8"); 
    	resp.setCharacterEncoding("UTF-8");
//    	PrintWriter out = resp.getWriter();
    	String mes=req.getParameter("major");
    	AddMessageDao dao = new AddMessageDao();
    	//System.out.println(num);
    	String sql = "select * from stumessage where major ='";
        sql += mes + "'";
//        out.println(sql);
    	List<AddMessageBean> SearchPro = dao.SearchPro(mes);  
        //保存查询的班级信息    
        req.setAttribute("SearchPro", SearchPro);
        //转发请求  
        req.getRequestDispatcher("/SearchPro.jsp").forward(req, resp);  
    }
}

-----------------------------------------------------------

按性别查询

SearchSex.java

package servlet;
import java.io.*;
import java.sql.*;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import dao.AddMessageDao;
import bean.AddMessageBean;
public class SearchSex extends HttpServlet{
	private static final long serialVersionUID = 1L;  
	  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
        this.doPost(req, resp);  
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {
    	req.setCharacterEncoding("UTF-8"); 
    	resp.setCharacterEncoding("UTF-8");
//    	PrintWriter out = resp.getWriter();
    	String mes=req.getParameter("sex");
    	AddMessageDao dao = new AddMessageDao();
    	//System.out.println(num);
    	String sql = "select * from stumessage where sex ='";
        sql += mes + "'";
//        out.println(sql);
    	List<AddMessageBean> SearchSex = dao.SearchSex(mes);  
        //保存查询的班级信息    
        req.setAttribute("SearchSex", SearchSex);
        //转发请求  
        req.getRequestDispatcher("/SearchSex.jsp").forward(req, resp);  
    }
}

-----------------------------------------------------------------

按入学年份查询

SearchYear.java

package servlet;
import java.io.*;
import java.sql.*;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import dao.AddMessageDao;
import bean.AddMessageBean;
public class SearchYear extends HttpServlet{
	private static final long serialVersionUID = 1L;  
	  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {  
        this.doPost(req, resp);  
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
            throws ServletException, IOException {
    	req.setCharacterEncoding("UTF-8"); 
    	resp.setCharacterEncoding("UTF-8");
//    	PrintWriter out = resp.getWriter();
    	String mes=req.getParameter("year");
    	AddMessageDao dao = new AddMessageDao();
    	//System.out.println(num);
    	String sql = "select * from stumessage where year ='";
        sql += mes + "'";
//        out.println(sql);
    	List<AddMessageBean> SearchYear = dao.SearchYear(mes);  
        //保存查询的班级信息    
        req.setAttribute("SearchYear", SearchYear);
        //转发请求  
        req.getRequestDispatcher("/SearchYear.jsp").forward(req, resp);  
    }
}




Java杂谈(八)--Servlet/Jsp

11-05

[color=#0000FF][align=center]Java杂谈(八)--Servlet/Jsp[/align]rn 终于正式进入J2ee的细节部分了,首当其冲的当然是Servlet和Jsp了,上篇曾经提到过J2ee只是一个规范和指南,定义了一组必须要遵循的接口,核心概念是组件和容器。曾经有的人问笔者Servlet的Class文件是哪里来的?他认为是J2ee官方提供的,我举了一个简单的反例:稍微检查了一下Tomcat5.0里面的Servlet.jar文件和JBoss里面的Servlet.jar文件大小,很明显是不一样的,至少已经说明了它们不是源自同根的吧。其实Servlet是由容器根据J2ee的接口定义自己来实现的,实现的方式当然可以不同,只要都遵守J2ee规范和指南。rn rn 上述只是一个常见的误区罢了,告诉我们要编译运行Servlet,是要依赖于实现它的容器的,不然连jar文件都没有,编译都无法进行。那么Jsp呢?Java Server Page的简称,是为了开发动态网页而诞生的技术,其本质也是Jsp,在编写完毕之后会在容器启动时经过编译成对应的Servlet。只是我们利用Jsp的很多新特性,可以更加专注于前后台的分离,早期Jsp做前台是满流行的,毕竟里面支持Html代码,这让前台美工人员可以更有效率的去完成自己的工作。然后Jsp将请求转发到后台的Servlet,由Servlet处理业务逻辑,再转发回另外一个Jsp在前台显示出来。这似乎已经成为一种常用的模式,最初笔者学习J2ee的时候,大量时间也在编写这样的代码。rnrn 尽管现在做前台的技术越来越多,例如Flash、Ajax等,已经有很多人不再认为Jsp重要了。笔者觉得Jsp带来的不仅仅是前后端分离的设计理念,它的另外一项技术成就了我们今天用的很多框架,那就是Tag标签技术。所以与其说是在学习Jsp,不如更清醒的告诉自己在不断的理解Tag标签的意义和本质。rnrn 1. Servlet以及Jsp的生命周期rn Servlet是Jsp的实质,尽管容器对它们的处理有所区别。Servlet有init()方法初始化,service()方法进行Web服务,destroy()方法进行销毁,从生到灭都由容器来掌握,所以这些方法除非你想自己来实现Servlet,否则是很少会接触到的。正是由于很少接触,才容易被广大初学者所忽略,希望大家至少记住Servlet生命周期方法都是回调方法。回调这个概念简单来说就是把自己注入另外一个类中,由它来调用你的方法,所谓的另外一个类就是Web容器,它只认识接口和接口的方法,注入进来的是怎样的对象不管,它只会根据所需调用这个对象在接口定义存在的那些方法。由容器来调用的Servlet对象的初始化、服务和销毁方法,所以叫做回调。这个概念对学习其他J2ee技术相当关键!rnrn 那么Jsp呢?本事上是Servlet,还是有些区别的,它的生命周期是这样的:rn a) 一个客户端的Request到达服务器 ->rn b) 判断是否第一次调用 -> 是的话编译Jsp成Servletrn c) 否的话再判断此Jsp是否有改变 -> 是的话也重新编译Jsp成Servletrn d) 已经编译最近版本的Servlet装载所需的其他Classrn e) 发布Servlet,即调用它的Service()方法rnrn 所以Jsp号称的是第一次Load缓慢,以后都会很快的运行。从它的生命的周期确实不难看出来这个特点,客户端的操作很少会改变Jsp的源码,所以它不需要编译第二次就一直可以为客户端提供服务。这里稍微解释一下Http的无状态性,因为发现很多人误解,Http的无状态性是指每次一张页面显示出来了,与服务器的连接其实就已经断开了,当再次有提交动作的时候,才会再次与服务器进行连接请求提供服务。当然还有现在比较流行的是Ajax与服务器异步通过xml交互的技术,在做前台的领域潜力巨大,笔者不是Ajax的高手,这里无法为大家解释。rnrn 2. Tag标签的本质rn 笔者之前说了,Jsp本身初衷是使得Web应用前后台的开发可以脱离耦合分开有效的进行,可惜这个理念的贡献反倒不如它带来的Tag技术对J2ee的贡献要大。也许已经有很多人开始使用Tag技术了却并不了解它。所以才建议大家在学习J2ee开始的时候一定要认真学习Jsp,其实最重要的就是明白标签的本质。rn rn Html标签我们都很熟悉了,有、、、 ,Jsp带来的Tag标签遵循同样的格式,或者说更严格的Xml格式规范,例如、、、等等。它们没有什么神秘的地方,就其源头也还是Java Class而已,Tag标签的实质也就是一段Java代码,或者说一个Class文件。当配置文件设置好去哪里寻找这些Class的路径后,容器负责将页面中存在的标签对应到相应的Class上,执行那段特定的Java代码,如此而已。rn说得明白一点的话还是举几个简单的例子说明一下吧:rn rn 去哪里找执行什么class呢?首先这是个jsp类库的标签,当然要去jsp类库寻找相应的class了,同样它也是由Web容器来提供,例如Tomcat就应该去安装目录的lib文件夹下面的jsp-api.jar里面找,有兴趣的可以去找一找啊!rn rn 又去哪里找呢?这个是由Jsp2.0版本推荐的和核心标记库的内容,例如就对应在页面中做if判断的功能的一断Java代码。它的class文件在jstl.jar这个类库里面,往往还需要和一个standard.jar类库一起导入,放在具体Web项目的WEB-INF的lib目录下面就可以使用了。rn rn 顺便罗唆一句,Web Project的目录结构是相对固定的,因为容器会按照固定的路径去寻找它需要的配置文件和资源,这个任何一本J2ee入门书上都有,这里就不介绍了。了解Tag的本质还要了解它的工作原理,所以大家去J2ee的API里找到并研究这个包:javax.servlet.jsp.tagext。它有一些接口,和一些实现类,专门用语开发Tag,只有自己亲自写出几个不同功能的标签,才算是真正理解了标签的原理。别忘记了自己开发的标签要自己去完成配置文件,容器只是集成了去哪里寻找jsp标签对应class的路径,自己写的标签库当然要告诉容器去哪里找啦。rnrn 说了这么多,我们为什么要用标签呢?完全在Jsp里面来个<% %>就可以在里面任意写Java代码了,但是长期实践发现页面代码统一都是与html同风格的标记语言更加有助于美工人员进行开发前台,它不需要懂Java,只要Java程序员给个列表告诉美工什么标签可以完成什么逻辑功能,他就可以专注于美工,也算是进一步隔离了前后台的工作吧!rnrn 3. 成就Web框架rn 框架是什么?曾经看过这样的定义:与模式类似,框架也是解决特定问题的可重用方法,框架是一个描述性的构建块和服务集合,开发人员可以用来达成某个目标。一般来说,框架提供了解决某类问题的基础设施,是用来创建解决方案的工具,而不是问题的解决方案。rn rn 正是由于Tag的出现,成就了以后出现的那么多Web框架,它们都开发了自己成熟实用的一套标签,然后由特定的Xml文件来配置加载信息,力图使得Web应用的开发变得更加高效。下面这些标签相应对很多人来说相当熟悉了:rn rn rn rn rn rn rnrn 它们分别来自Struts和JSF框架,最强大的功能在于控制转发,就是MVC三层模型中间完成控制器的工作。Struts-1实际上并未做到真正的三层隔离,这一点在Struts-2上得到了很大的改进。而Jsf向来以比较完善合理的标签库受到人们推崇。rnrn 今天就大概讲这么多吧,再次需要强调的是Servlet/Jsp是学习J2ee必经之路,也是最基础的知识,希望大家给与足够的重视![/color]

做一个火车信息查询,站站查询(八)

08-20

上次提问,站站查询火车信息。rn数据库提供了两张表:trainInfo 、trainDetails rn例如rn1. trainInfo(基本信息表) rnrn 列车ID 车次 日期 始发站 终点站 限售站 硬座 硬卧 软座 软卧 站票 rn 190000140823 1405 20090722 通化 青岛 青岛 0 45 0 3 72 rn 190000140823 1405 20090722 通化 青岛 青州市 0 0 0 0 1 rnrn2.trainDetails(详细信息表) rnrn 列车ID 序列 站名 车次 到时 发时 rn190000140823 19 天津 1405 0753 0802 rn190000140823 20 沧州 1405 0921 0924 rn190000140823 21 泊头 1405 1019 1022 rn190000140823 22 德州 1405 1117 1120 rn190000140823 23 禹城 1405 1203 1205 rn190000140823 24 晏城 1405 1219 1221 rn190000140823 25 济南东 1405 1255 1308 rn190000140823 26 淄博 1405 1407 1409 rn190000140823 27 青州市 1405 1435 1437 rn190000140823 28 潍坊 1405 1524 1528 rn190000140823 29 高密 1405 1633 1700 rn190000140823 30 青岛 1405 1813 1815rn190000140823 30 青岛东 1405 1840 1840rnrnrn现在查询从“济南”到“青岛”方向,必须采用模糊查询rn我写的SQL语句如下:rnselect rn(select distinct 站名 from trainDetails where 列车ID=a.列车ID and 站名 like '青岛%'),rn(select distinct 到时 from trainDetails where 列车ID=a.列车ID and 站名 like '青岛%'),rnfrom trainInfo a rninner join trainDetails b on a.列车ID=b.列车ID and a.限售站=b.站名rninner join trainDetails c on a.列车ID=c.列车ID and c.站名='青岛%'rninner join trainDetails d on a.列车ID=d.列车ID and d.站名='济南%'rnwhere a.列车ID in (rnselect distinct 列车ID from trainDetails a rnwhere exists(select 1 from trainDetails where 列车ID=a.列车ID and 站名='济南%')rnand exists(select 1 from trainDetails where 列车ID=a.列车ID and 站名='青岛%'))rnand b.序列>c.序列 and c.序列>d.序列rnrn现在执行SQL语句后出问题了,问题出在语句的第2、3行。rn因为通过表trainDetails 可知,ID为190000140823的列车经过青岛和青岛东rn那么第2行(select distinct 站名 from trainDetails where 列车ID=a.列车ID and 站名 like '青岛%')会查出两个值,rn这时会报错:子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。rnrn为了能够达到查询全面的效果rn这个错误如何解决?rnrn触发器专家帮忙!

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试