学生信息管理系统(SSM)

586 阅读7分钟

使用Spring+SpringMVC+Mybatis构建学生信息管理系统

在MyEclipse中新建Web Project,在src目录下新建po、mapper包(相当于之前的dao包)、biz、action、util包(工具包用于将Java对象转换成Json字符串输出)

1、引入spring组件包和mybatis组件包以及mybatis-spring的插件包。还需要引入fastjson组件包进行Java对象转json字符串的处理
MyEclipse—>Project Capabilities—>Add Spring Capabilities—>勾选前三个(Spring 3.1 Core Libraries、Persistence Libraries、Web Libraries—>Next—>Enable AOP Builder—>Finish)
从mybaties组件包里复制mybatis-3.3.0.jar、mybatis-spring-1.2.1.jar、mysql-connector-java-5.1.9-bin.jar到项目WEB-INF目录下lib文件夹里
复制fastjson-1.1.33.jar到lib文件夹里

2、编写实体类、Mapper接口类和Mapper的sql映射文件
(对数据库studb保留clazz、student两个表数据)
实体类Clazz.java

package com.po;
import java.io.Serializable;

public class Clazz implements Serializable {
	private Integer cid;
	private String cname;
	public Clazz() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Clazz(Integer cid, String cname) {
		super();
		this.cid = cid;
		this.cname = cname;
	}
	
	/****** getter&setter ******/
	
}

实体类Student.java

package com.po;

import ...

public class Student implements Serializable {
	private Integer sid;
	private String sname;
	private String sex;
	private String address;
	private Date birthday;
	private Integer classid;
	private String cname;
	private String sdate;
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Student(Integer sid, String sname, String sex, String address,
			Date birthday, Integer classid, String cname) {
		super();
		this.sid = sid;
		this.sname = sname;
		this.sex = sex;
		this.address = address;
		this.birthday = birthday;
		this.classid = classid;
		this.cname = cname;
	}
	public Student(String sname, String sex, String address, Date birthday,
			Integer classid) {
		super();
		this.sname = sname;
		this.sex = sex;
		this.address = address;
		this.birthday = birthday;
		this.classid = classid;
	}
	
	/****** getter&setter ******/
	
	public String getSdate() {
		if(birthday!=null){
		    //SimpleDateFormat用来格式化时间
			sdate=new SimpleDateFormat("yyyy-MM-dd").format(birthday);
		}
		return sdate;
	}
	public void setSdate(String sdate) {
		if(sdate!=null&&!sdate.trim().equals("")){
			try {
				birthday=new SimpleDateFormat("yyyy-MM-dd").parse(sdate);
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}	
		}
		this.sdate = sdate;
	}
	
}

Mapper接口类StudentMapper添加注解@Service

package com.mapper;
import ...
@Service
public interface StudentMapper {
	public int save(Student st);
	public int update(Student st);
	public int delById(Integer sid);
	public Student findById(Integer sid);
	public List<Student> findPageAll(Map<String,Object> map); //相当于在Map集合中包装了当前页数page、每页记录数rows
	public int findMaxRow();
	public List<Clazz> doinit(); //返回班级列表
}

Mapper的sql映射文件StudentMapper.xml
New->XML(Basic Templates)...在mybaties组件包里复制mapper映射文件规范.txt到StudentMapper.xml并做对应修改

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!-- com.mapper.StudentMapper为接口类 -->
<mapper namespace="com.mapper.StudentMapper">

	<insert id="save" parameterType="com.po.Student">
		insert into student(sname,sex,address,birthday,classid) 
		 values(#{sname},#{sex},#{address},#{birthday},#{classid})
	</insert>
	
	<update id="update" parameterType="com.po.Student">
		update student set sname= #{sname},sex=#{sex},address=#{address},
		birthday=#{birthday},classid=#{classid} where sid=#{sid}
	</update>
	
	<delete id="delById" parameterType="java.lang.Integer">
		delete from student where sid=#{sid}
	</delete>
	
	<!---parameterType:传递的参数类型; resultType:返回的元素类型 ---!>
	<select id="findById" parameterType="java.lang.Integer" resultType="com.po.Student">
		select * from student where sid=#{sid}
	</select>
	
	<select id="findPageAll" parameterType="java.util.Map"  resultType="com.po.Student">
		select * from student s,clazz c where s.classid=c.cid order by sid limit ${(page-1)*rows},${rows}
	</select>
	 
	<select id="findMaxRow"   resultType="int">
		select count(*) from student
	</select>
	
	<select id="doinit"   resultType="com.po.Clazz">
		select * from clazz where 1=1 order by cid
	</select>
	<!--- where 1=1的应用仅仅只是为了满足多条件查询页面中不确定的各种因素
	而采用的一种构造一条正确能运行的动态SQL语句的一种方法 ---!>
</mapper>

3、编写业务接口和业务实现类,并加入注解@Service
业务接口 IStudentBiz.java,业务接口的实现方法和Mapper接口一样

package com.biz;
import ...
public interface IStudentBiz {
	public int save(Student st);
	public int update(Student st);
	public int delById(Integer sid);
	public Student findById(Integer sid);
	public List<Student> findPageAll(int page,int rows);
	public int findMaxRow();
	public List<Clazz> doinit();
}

业务实现类 StudentBiz.java加入@Service和事务注解@Transactional

package com.biz;

import ...

@Service
@Transactional
public class StudentBiz implements IStudentBiz {
	@Autowired  //自动装配模式
	private StudentMapper studentMapper;
	
	public StudentMapper getStudentMapper() {
		return studentMapper;
	}
	public void setStudentMapper(StudentMapper studentMapper) {
		this.studentMapper = studentMapper;
	}

	public int save(Student st) {
		return studentMapper.save(st);;
	}

	public int update(Student st) {
		return studentMapper.update(st);
	}

	public int delById(Integer sid) {
		return studentMapper.delById(sid);
	}

	public Student findById(Integer sid) {
		Student st=studentMapper.findById(sid);
		return st;
	}

	public List<Student> findPageAll(int page,int rows) {
		if(page<1)page=1;
		if(rows<1)rows=5;
		Map<String,Object> map=new HashMap<String, Object>();
		map.put("page", page);
		map.put("rows", rows);
		return studentMapper.findPageAll(map);
	}

	public int findMaxRow() {
		return studentMapper.findMaxRow();
	}

	public List<Clazz> doinit() {
		return studentMapper.doinit();
	}
}

4、编写控制器接口和实现类,设置注解@Contraller
控制器接口 IStudentAction

package com.action;
import ...
public interface IStudentAction {
	public String save(HttpServletRequest request,HttpServletResponse response,Student st);
	public String update(HttpServletRequest request,HttpServletResponse response,Student st);
	public String delById(HttpServletRequest request,HttpServletResponse response,Integer sid);
	public String findById(HttpServletRequest request,HttpServletResponse response,Integer sid);
	public String findPageAll(HttpServletRequest request,HttpServletResponse response,Integer page,Integer rows);
	public String doinit(HttpServletRequest request,HttpServletResponse response);
}

编写工具类AjaxUtil.java

package com.util;
import ...
public class AjaxUtil {
	/***
	 * 向客户端浏览器发送响应的结果数据
	 * */
	public static void printToString(HttpServletResponse response,String resultString){
		response.setCharacterEncoding("utf-8");
		PrintWriter out=null;
		try {
			out=response.getWriter();
			out.print(resultString);
			out.flush();
			out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

接口实现类StudentAction.java

package com.action;
import ...

@Controller
public class StudentAction implements IStudentAction {
	@Autowired 
	private IStudentBiz studentBiz; //依赖的都是接口,不是实现类,否则会报代理异常
	
	public IStudentBiz getStudentBiz() {
		return studentBiz;
	}

	public void setStudentBiz(IStudentBiz studentBiz) {
		this.studentBiz = studentBiz;
	}
	
	@RequestMapping(value="save_Student.do")
	public String save(HttpServletRequest request,
			HttpServletResponse response, Student st) {
		int code=studentBiz.save(st);
		if(code>0){
			AjaxUtil.printToString(response, ""+1);//保存成功
		}else{
			AjaxUtil.printToString(response, ""+0);//保存失败
		}
		return null;
	}
	
	@RequestMapping(value="update_Student.do")
	public String update(HttpServletRequest request,
			HttpServletResponse response, Student st) {
		int code=studentBiz.update(st);
		if(code>0){
			AjaxUtil.printToString(response, ""+1);//保存成功
		}else{
			AjaxUtil.printToString(response, ""+0);//保存失败
		}
		
		return null;
	}
	
	@RequestMapping(value="delById_Student.do")
	public String delById(HttpServletRequest request,
			HttpServletResponse response, Integer sid) {
		int code=studentBiz.delById(sid);
		if(code>0){
			AjaxUtil.printToString(response, ""+1);//删除成功
		}else{
			AjaxUtil.printToString(response, ""+0);//删除失败
		}
		return null;
	}
	
	@RequestMapping(value="findById_Student.do")
	public String findById(HttpServletRequest request,
			HttpServletResponse response, Integer sid) {
		Student oldst=studentBiz.findById(sid);
		
		//转为json字符串
		String jsonstr=JSONObject.toJSONString(oldst);
		
		//在jsp页面使用$.getJSON('findById_Student.do?sid=1',function(json对象){})
		System.out.println("jsonstr--->"+jsonstr);
		
		//输出到客户端浏览器
		AjaxUtil.printToString(response, jsonstr); 
		
		return null;
	}
	
	@RequestMapping(value="findPageAll_Student.do")
	public String findPageAll(HttpServletRequest request,
			HttpServletResponse response, Integer page, Integer rows) {
		page=page==null?1:page;
		rows=rows==null?5:rows;
		if(rows>20)rows=20;//限定一页20条记录
		
		//获取总记录数
		int maxrow=studentBiz.findMaxRow();
		int maxpage=1;
		//获取总页数
		if(maxrow>0){
			maxpage=maxrow%rows==0?maxrow/rows:maxrow/rows+1;
		}
		System.out.println("maxpage--->"+maxpage);
		//判断当前页数是否大于总页数
		if(page>maxpage)page=maxpage;
		
		//获取当前页记录集合
		List<Student> lsst=studentBiz.findPageAll(page, rows);
		
		//将分页数据设置到Map集合中 
		Map<String,Object> map=new HashMap<String, Object>();
		map.put("page", page);
		map.put("rows", rows);
		map.put("maxpage", maxpage);
		map.put("lsst", lsst);
		
		//将map集合转为json字符串
		String jsonstr=JSONObject.toJSONString(map);
		System.out.println("jsonstr--->"+jsonstr);//在jsp页面使用$.getJSON('findById_Student.do?sid=1',function(json对象){})
		AjaxUtil.printToString(response, jsonstr);//输出到客户端浏览器
		
		return null;
	}
	
	@RequestMapping(value="doinit_Student.do")
	public String doinit(HttpServletRequest request,
			HttpServletResponse response) {
		List<Clazz> lsca=studentBiz.doinit();
		//将map集合转为json字符串
		String jsonstr=JSONObject.toJSONString(lsca);
		System.out.println("jsonstr--->"+jsonstr);//在jsp页面使用$.getJSON('findById_Student.do?sid=1',function(json对象){})
		AjaxUtil.printToString(response, jsonstr);//输出到客户端浏览器
				
		return null;
	}
}

JSONObject是FastJson提供的对象,toJSONString()是其常用方法
JSONObject.toJSONString();将JSONObject对象转换为json的字符串

5、配置mybatis-config.xml文件,加入mapper文件的路径
src根目录下新建XML(Basic Templates)命名为mybatis-config.xml, 在mybaties组件包里复制mybaties配置文档.txt到mybatis-config.xml并做对应修改
mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<mappers>
	    <mapper resource="com/mapper/StudentMapper.xml" />
	</mappers>
</configuration>

6、配置applicationContext.xml文件,注入数据源dataSoruce、mybatis的SqlSessionFactory和注入Spring的事务管理
打开“springmvc整合mybatis配置的applicationContext”文件,复制并做对应修改,在MyEclipse中配置数据库驱动Database Driver步骤和在applicationContext.xml中一键配置数据源见学生信息管理系统SSJ
applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
		
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
		
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
		
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.1.xsd
		
		"
		default-autowire="byName"
		>
	<!-- 使用注解配置 -->
	<context:annotation-config></context:annotation-config>	
	<!-- 扫描 -->
	<context:component-scan base-package="com.mapper"></context:component-scan>
	<context:component-scan base-package="com.biz"></context:component-scan>
	<context:component-scan base-package="com.action"></context:component-scan>
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName"
			value="com.mysql.jdbc.Driver">
		</property>
		<property name="url"
			value="jdbc:mysql://localhost:3306/studb">
		</property>
		<property name="username" value="root"></property>
		<property name="password" value="java"></property>
	</bean>
	
	<!-- 创建SqlSessionFactory,同时指定数据源 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <property name="dataSource" ref="dataSource" />
    </bean>
	<!-- 在mapper包扫描所有的sql映射文档xxxMapper.xml文件 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.mapper" />
    </bean>
	<!-- JDBC事务管理 -->
	<bean id="txmanager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<tx:annotation-driven transaction-manager="txmanager"/>	

</beans>

7、配置springmvc-servlet.xml文件
在WEB-INF目录下新建springmvc-servlet.xml文件
springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
		
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
		
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
		
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.1.xsd
		"
		default-autowire="byName"
	>

	<context:annotation-config></context:annotation-config>
	<context:component-scan base-package="com.action"></context:component-scan>		
	
</beans>

8、配置web.xml文件加入Spring的启动和中文转码过滤器
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>student.jsp</welcome-file>
  </welcome-file-list>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
     <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
   
</web-app>

在MyEclipse中部署项目并启动Tomcat测试 http://localhost:8080/prjMVC/findPageAll_Student.do

9、编写jsp视图测试
掌握Dream Weaver 8的使用
在WebRoot目录下新建js文件夹,导入jquery-1.9.1.js
student.jsp

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>学生管理系统</title>
<script type="text/javascript" src="js/jquery-1.9.1.js"></script>  <!--导入jQuery--->
<script>
	/***********初始化下拉列表框*************/
	$(function(){
		$("#btsave").show();
		$("#btupdate").hide();
		
		$.getJSON('doinit_Student.do',function(lsca){
			for(var i=0;i<lsca.length;i++){
				var clazz=lsca[i];
				$("#classid").append("<option value="+clazz.cid+">"+clazz.cname+"</option>");	
			}
		});
	
		showAll();
	});
	
	/*****************************************/
	/***********获取学生列表的方法************************/
	var page=1;
	var rows=5;
	var maxpage=1;
	function showAll(){
		$.getJSON('findPageAll_Student.do?page='+page+'&rows='+rows+'&time='+new Date().getTime(),function(mappage){  
		      //加入时间戳防止浏览器缓存
			page=mappage.page;
			rows=mappage.rows;
			maxpage=mappage.maxpage;
			var lsst=mappage.lsst;//获取map中的学生集合
			
			var tableHead="<table width='800' border='1' align='center' cellpadding='1' cellspacing='0'>"
						+"<tr align='center' bgcolor='#FFFFCC'>"
						+"<td width='59'>编号</td>"
						+"<td width='121'>姓名</td>"
						+"<td width='77'>性别</td>"
						+"<td width='146'>地址</td>"
						+"<td width='108'>生日</td>"
						+"<td width='122'>班级</td>"
						+"<td width='137'>操作</td>"
						+"</tr>";
			var trrows="";
			for(var i=0;i<lsst.length;i++){
				var st=lsst[i];
				trrows+="<tr align='center'>"
					+"<td>"+st.sid+"</td>"
					+"<td>"+st.sname+"</td>"
					+"<td>"+st.sex+"</td>"
					+"<td>"+st.address+"</td>"
					+"<td>"+st.sdate+"</td>"
					+"<td>"+st.cname+"</td>"
					+"<td><input type='button' name='btdel' id='btdel' value='删除' onclick='dodel("+st.sid+")' />"
					+"<input type='button' name='btfind' id='btfind' value='编辑' onclick='findById("+st.sid+")'/></td>"
					+"</tr>";
			}			
						
			var endtable=tableHead+trrows+"</table>";
			$("#ttable").html(endtable);
			
			//给分页的表格赋值
			$("#rows").val(rows);
			$("#page").val(page);
			$("#pageLabel").html(page+"/"+maxpage+"页");
		});
	}
	/*****************************************************/
	/************************分页处理*****************************/
	$(function(){
		$("#btfirst").click(function(){
			
			page=1;
			//alert(page);
			showAll();
		});
		
		$("#btup").click(function(){
			
			page=page-1;
			//alert(page);
			if(page<1){
				page=1;	
			}
			showAll();
		});
		
		$("#btnext").click(function(){
			
			page=page+1;
			//alert(page);
			if(page>maxpage){
				page=maxpage;	
			}
			showAll();
		});
		$("#btlast").click(function(){
			page=maxpage;
			//alert(page);
			showAll();
		});
		
		$("#btchangerows").click(function(){
			rows=$("#rows").val();
			if(isNaN(rows)){
				alert('请输入正确的数值!');
				$("#rows").val(5);
				return;
			}
			showAll();
		});
		$("#btchangepage").click(function(){
			page=$("#page").val();
			if(isNaN(rows)){
				alert('请输入正确的数值!');
				$("#page").val(1);
				return;
			}
			showAll();
		});
	});
	/*************************************************************/	
	
	
	
	/**********************保存方法*******************************/
	$(function(){
		$("#btsave").click(function(){
			//获取表单元素的值
			var sname=$("#sname").val();
			var sex=$(":radio[name='sex']:checked").val();//获取选中的单选按钮值
			var address=$("#address").val();
			var sdate=$("#sdate").val();
			var classid=$("#classid").val();
			//组装为json对象准备传递给服务器save_Student路径对应的方法
			var st={'sname':sname,'sex':sex,'address':address,'sdate':sdate,'classid':classid};
			//发送json对象到服务器
			$.post('save_Student.do',st,function(code){
				if(code=='1'){
					alert('保存成功!');
					showAll();//刷新表格
				}else{
					alert('保存失败!');
				}
			});
		});
	});
	/*************************************************************/	
	/**********************更新方法*******************************/
	$(function(){
		$("#btupdate").click(function(){
			//获取表单元素的值
			var sid=$("#sid").val();
			var sname=$("#sname").val();
			var sex=$(":radio[name='sex']:checked").val();//获取选中的单选按钮值
			var address=$("#address").val();
			var sdate=$("#sdate").val();
			var classid=$("#classid").val();
			//组装为json对象准备传递给服务器save_Student路径对应得方法
			var st={'sid':sid,'sname':sname,'sex':sex,'address':address,'sdate':sdate,'classid':classid};
			//发送json对象到服务器
			$.post('update_Student.do',st,function(code){
				if(code=='1'){
					alert('更新成功!');
					showAll();//刷新表格
				}else{
					alert('更新失败!');
				}
			});
			
			$("#btsave").show();
			$("#btupdate").hide();
		});
	});
	/*************************************************************/	
	
	/********************删除事件************************************/
	function dodel(sid){
		var flag=window.confirm('是否真的删除!');
		if(flag){
			$.get('delById_Student.do?sid='+sid,function(code){
				if(code=='1'){
					alert('删除成功!');
					showAll();//刷新表格
				}else{
					alert('删除失败!');
				}
			});
		}
	}
	/*************************************************************/	
	
	/***********************查找的方法*****************************/
	function findById(sid){
		$.getJSON('findById_Student.do?sid='+sid+'&t='+new Date().getTime(),function(oldst){
			//给表单元素赋值
			$("#sid").val(oldst.sid);
			$("#sname").val(oldst.sname);
			$(":radio[value='"+oldst.sex+"']").attr("checked",true);
			$("#address").val(oldst.address);
			$("#sdate").val(oldst.sdate);
			$("#classid").val(oldst.classid);
		});
		
		$("#btsave").hide();
		$("#btupdate").show();
	}
	/************************************************************/
</script>
</head>

<body>
<p align="center">学生信息列表</p>
<hr />
<div id="ttable">
	
</div>
 <table width="800" border="1" align="center" cellpadding="1" cellspacing="0">
    <tr align="center" bgcolor="#FFFFCC">
      <td>
     
      <input type="button" name="btfirst" id="btfirst" value="首页" /></td>
      <td>
     
     
      <input type="button" name="btup" id="btup" value="上页" /></td>
      <td>
     
     
      <input type="button" name="btnext" id="btnext" value="下页" /></td>
      <td>
    
      <input type="button" name="btlast" id="btlast" value="末页" /></td>
      <td>每页
        <label for="rows"></label>
      <input name="rows"  type="text" id="rows" size="1" />
      条记录 
      <input type="button" name="btchangerows" id="btchangerows" value="确定" /></td>
      <td>跳转到第
        <label for="page"></label>
        <input name="page"  type="text" id="page" size="1" />
        页
<input type="button" name="btchangepage" id="btchangepage" value="确定" /></td>
      <td><span id="pageLabel">1/1页</span></td>
    </tr>
  </table>
<hr />
<form id="form1" name="form1" method="post" action="">
  <table width="450" border="1" align="center">
    <tr>
      <td colspan="2" align="center" bgcolor="#FFFFCC">学生管理</td>
    </tr>
    <tr>
      <td width="66">姓名:</td>
      <td width="368"><label for="sname"></label>
      <input type="text" name="sname" id="sname" />
      <input type="hidden" name="sid" id="sid" />
      
      </td>
    </tr>
    <tr>
      <td>性别:</td>
      <td><input name="sex" type="radio" id="radio" value="男" checked="checked" />
      <label for="sex">男
        <input type="radio" name="sex" id="radio2" value="女" />
      女</label></td>
    </tr>
    <tr>
      <td>地址:</td>
      <td><input type="text" name="address" id="address" /></td>
    </tr>
    <tr>
      <td>生日:</td>
      <td><input type="date" name="sdate" id="sdate" value="1995-01-01"/></td>
    </tr>
    <tr>
      <td>班级:</td>
      <td><label for="classid"></label>
        <select name="classid" id="classid">
      </select></td>
    </tr>
    <tr>
      <td colspan="2" align="center" bgcolor="#FFFFCC"><input type="button" name="btsave" id="btsave" value="保存" />
      <input type="button" name="btupdate" id="btupdate" value="更新" />
      <input type="reset" name="btreset" id="btreset" value="重置" /></td>
    </tr>
  </table>
</form>
<p>&nbsp;</p>
</body>
</html>