SSHE框架整合(增删改查)

1.前期准备:jar包(c3p0、jdbc ,各个框架)

web.xml文件:spring的   转码的,和Struts2的过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>L1219_SSHE</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- spring -->
 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:app.xml</param-value>
    
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <!-- 转码 -->
    <filter>
	  <filter-name>encodingFilter</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>
		  <init-param>
			   <param-name>forceEncoding</param-name>
			   <param-value>true</param-value>
		  </init-param>
	 </filter>
  <filter-mapping>
		  <filter-name>encodingFilter</filter-name>
		  <url-pattern>/*</url-pattern>
 	</filter-mapping>
  
  
  <!-- 过滤器 -->
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
 
</web-app>

  Hibernate.cfg.xml的文件,并生成实体类的映射文件,

注意:现在用spring来生成映射文件。

spring的app.xml的配置,用的连接池来连接数据库

Hibernate的各种配置,sessionFactory声明当前session,通过sessionFactory.getCurrentSession()来获取,(DAO层)

声明事务

然后见如下图所示的各种包,在包中实现各接口以及实现类(impl)实现类中主要是个方法(增删改查)

Struts2的配置,主要是Action的方法的配置,(增删改查的action)

注意:name是页面发送的get或post请求的URL地址,class是spring中对应的id, method是Action类中的方法名

 

 

 DAO层接口

package com.hanqi.dao;

import java.util.List;
import java.util.Map;

import com.hanqi.entity.Student;

public interface StudentDAO {
	
	//获取数据列表
	List<Student> find(int page , int rows,String sort,Map<String,String> where);
//获取数据条数
	int getTotal(Map<String,String> where);
	
	void insert(Student stu);//添加
	void update(Student stu);//修改
	void delete(String sno);//删除
}

  DAO的实现类

package com.hanqi.dao.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.hibernate.SessionFactory;

import com.hanqi.dao.StudentDAO;
import com.hanqi.entity.Student;

public class StudentDAOImpl implements StudentDAO {

	private SessionFactory  sessionFactory;
	
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	@Override
	public List<Student> find(int page, int rows, String sort, Map<String, String> where) {
		
		//创建基础HQL语句
				String sql = "from Student where 1=1";
				//判断传递的的参数
				String sname =  where.get("sname_s");
				if(sname != null && !sname.equals(""))
				{
					sql += " and sname = :sname";
				}
				
				
				String sclass =  where.get("sclass_s");
				if(sclass != null && !sclass.equals(""))
				{
					sql += " and sclass = :sclass";
				}
				//排序
				
				if(sort != null && !sort.equals(""))
				{
					sql += " order by " + sort;
				}
				//得到HQL
			//并判断查询条件
			Query q = sessionFactory.getCurrentSession().createQuery(sql);
			if(sname != null  && !sname.equals(""))
			{
				q.setString("sname",sname);
			}
			if(sclass != null && !sclass.equals(""))
			{
				q.setString("sclass",sclass);
			}
			
				 List<Student> rtn = new ArrayList<Student>(); 
				 rtn = q.setMaxResults(rows)//每页行数
					 .setFirstResult((page-1)*rows).list();//起始页码
		
		return rtn;
	}

	@Override
	public int getTotal(Map<String, String> where) {
		int rtn= 0;
		
		//创建基础HQL语句
				String sql = "select count(1) from Student where 1=1";
				//判断传递的的参数
				String sname =  where.get("sname_s");
				if(sname != null && !sname.equals(""))
				{
					sql += " and sname = :sname";//and前面加空格
				}
				
				
				String sclass =  where.get("sclass_s");
				if(sclass != null && !sclass.equals(""))
				{
					sql += " and sclass = :sclass";
				}
				//得到HQL
				Query q = sessionFactory.getCurrentSession().createQuery(sql);
				if(sname != null  && !sname.equals(""))
				{
					q.setString("sname",sname);
				}
				if(sclass != null && !sclass.equals(""))
				{
					q.setString("sclass",sclass);
				}
		//获取Query对对象,定义集合并实例化
		List<Object> lo = q.list();
		
		if(lo != null && lo.size() > 0)
		{
			rtn = Integer.parseInt(lo.get(0).toString());//转换成int并赋值
		}
		
		
		
		return rtn;
	}

	

	//添加数据
	@Override
	public void insert(Student stu)
	{
		
		
		 sessionFactory.getCurrentSession().save(stu);
		
		
		
		 
		
	}
	
	
	//修改数据
	@Override
		public void update(Student stu)
		{
			
			
			 sessionFactory.getCurrentSession().update(stu);
			
			
			
			 
		}
		
	//删除
	@Override
		public void delete(String sno)
		{
			
			//Student st = (Student)se.get(Student.class, sno);
			
			//se.delete(st);
			
			//HQL方式执行删除
			 sessionFactory.getCurrentSession().createQuery("delete  Student where sno =?")
			 .setString(0, sno)
			 .executeUpdate();
			
			
			
		}
	
	
}

  service接口

package com.hanqi.service;

import java.util.List;
import java.util.Map;

import com.hanqi.entity.Student;

public interface StudentService {
	List<Student>getList(int page , int rows,String sort,Map<String,String> where);
	int getTotal(Map<String,String> where);
	String getPageJSON(int page, int rows,String sort,Map<String,String> where);

//	void insert(Student stu);
//	void update(Student stu);
//	void delete(String sno);
	
	//service的添加
	void addStudent(Student stu);
	//修改
	void editStudent(Student stu);
	
	//删除
	void deleteStudent(String sno);
}

  service的实现类

package com.hanqi.service.impl;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.hanqi.dao.StudentDAO;
import com.hanqi.entity.Student;
import com.hanqi.service.PageJSON;
import com.hanqi.service.StudentService;

public class StudentServiceImpl implements StudentService {

	private StudentDAO studentDAO;
	
	
	public void setStudentDAO(StudentDAO studentDAO) {
		this.studentDAO = studentDAO;
	}


	@Override
	public List<Student> getList(int page, int rows, String sort, Map<String, String> where) {
		// TODO 自动生成的方法存根
		return studentDAO.find(page, rows, sort, where);
	}


	@Override
	public int getTotal(Map<String, String> where) {
		// TODO 自动生成的方法存根
		return studentDAO.getTotal(where);
	}


	@Override
	public String getPageJSON(int page, int rows, String sort, Map<String, String> where) {

		PageJSON<Student> pj = new PageJSON<Student>();//引用泛型类
		String rtn = JSONObject.toJSONString(pj);   //"{total:0,rows:[]}";//空的JSON对象
		
		int total =  studentDAO.getTotal(where);//符合查询条件的总条数
		if(total>0)
		{
			List<Student> ls =  studentDAO.find(page, rows,sort,where);
			
			//String ls_json = JSONArray.toJSONString(ls);//转成JSON格式
			
			pj.setTotal(total);
			pj.setRows(ls);
			
			rtn = JSONObject.toJSONString(pj);
			
			//转义字符,转成JSON读取的格式
			//rtn =  "{"total":"+total+","rows":"+ls_json+"}" ;

			
		}
		
		return rtn;
	}


//	@Override
//	public void insert(Student stu) {
//		// TODO 自动生成的方法存根
//		studentDAO.insert(stu);
//	}
//
//
//	@Override
//	public void update(Student stu) {
//		// TODO 自动生成的方法存根
//		studentDAO.update(stu);
//		
//	}
//
//
//	@Override
//	public void delete(String sno) {
//		// TODO 自动生成的方法存根
//		studentDAO.delete(sno);
//	}


	@Override
	public void addStudent(Student stu) {
		// TODO 自动生成的方法存根
		studentDAO.insert(stu);
	}


	@Override
	public void editStudent(Student stu) {
		// TODO 自动生成的方法存根
		studentDAO.update(stu);
		
	}


	@Override
	public void deleteStudent(String sno) {
		// TODO 自动生成的方法存根
		studentDAO.delete(sno);
	}


	

}

  Action

package com.hanqi.action;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.hanqi.entity.Student;
import com.hanqi.service.StudentService;

public class StudentAction {
	
	private StudentService studentService;
	
	HttpServletResponse response = ServletActionContext.getResponse();
	
	public void setStudentService(StudentService studentService) {
		this.studentService = studentService;
	}


	//接受参数
	private int page;
	private int rows;
	private String sort;
	private String order;
	
	private String sname_s;
	private String sclass_s;
	
	//添加的参数
	private String sno ;
	private String sname ;
	private String ssex;
	private String sbirthday;
	private String sclass;
	

	//接受参数表示添加或修改
	private String type ;
	
	

	public String getType() {
		return type;
	}


	public void setType(String type) {
		this.type = type;
	}


	public String getSno() {
		return sno;
	}


	public void setSno(String sno) {
		this.sno = sno;
	}


	public String getSname() {
		return sname;
	}


	public void setSname(String sname) {
		this.sname = sname;
	}


	public String getSsex() {
		return ssex;
	}


	public void setSsex(String ssex) {
		this.ssex = ssex;
	}


	public String getSbirthday() {
		return sbirthday;
	}


	public void setSbirthday(String sbirthday) {
		this.sbirthday = sbirthday;
	}


	public String getSclass() {
		return sclass;
	}


	public void setSclass(String sclass) {
		this.sclass = sclass;
	}


	public StudentService getStudentService() {
		return studentService;
	}


	public int getPage() {
		return page;
	}


	public void setPage(int page) {
		this.page = page;
	}

	public int getRows() {
		return rows;
	}

	public void setRows(int rows) {
		this.rows = rows;
	}


	public String getSort() {
		return sort;
	}

	public void setSort(String sort) {
		this.sort = sort;
	}
	public String getOrder() {
		return order;
	}
	public void setOrder(String order) {
		this.order = order;
	}

	public String getSname_s() {
		return sname_s;
	}

	public void setSname_s(String sname_s) {
		this.sname_s = sname_s;
	}

	public String getSclass_s() {
		return sclass_s;
	}


	public void setSclass_s(String sclass_s) {
		this.sclass_s = sclass_s;
	}


	
	
	@Override
	public String toString() {
		return "StudentAction [page=" + page + ", rows=" + rows + ", sort=" + sort + ", order=" + order + ", sname_s="
				+ sname_s + ", sclass_s=" + sclass_s + "]";
	}


	//返回数据列表
	public void getStudentList()
	{
		System.out.println("this="+this);
		
		//调用serIve
		try
		{
		//查询参数
				
				if(sname_s != null)
				{
				sname_s  = new String(sname_s.getBytes("ISO-8859-1"),"UTF-8");
				}
				
				
				
				if(sclass_s != null)
				{
				sclass_s  = new String(sclass_s.getBytes("ISO-8859-1"),"UTF-8");
				}
				System.out.println("sname_s="+sname_s+"sclass_s="+sclass_s);
				
				//对条件进行打包
				Map<String,String> where = new HashMap<String,String>();
				
				where.put("sname_s", sname_s);
				where.put("sclass_s", sclass_s);
				
				//对分页情况的判断
				
				
				//组合排序语句
				String  ls = "";
					if(sort != null && order != null)
					{
						ls= sort + " " + order;//注意加空格
					}
					//System.out.println("ls="+ls);
					String json =  studentService.getPageJSON(page, rows,ls,where);
				
					System.out.println("json="+json);
					
					//返回数据
					
					HttpServletResponse response = ServletActionContext.getResponse();
					
					response.setCharacterEncoding("UTF-8");
					response.setContentType("text/json");
					
					
					response.getWriter().println(json);
					
		
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}

	
	//添加
	public void getSave()
	{
		HttpServletResponse response = ServletActionContext.getResponse();
		String msg = "{'success':true,'message':'保存成功'}";
		if(sno != null && type != null)
		{
			try
			{
				Student stu = new Student();
				stu.setSno(sno);
				stu.setSclass(sclass);
				stu.setSname(sname);
				stu.setSsex(ssex);
				if(sbirthday !=null && !sbirthday.trim().equals(""))
				{
					SimpleDateFormat  sdf = new SimpleDateFormat("yyyy-MM-dd");
					stu.setSbirthday(sdf.parse(sbirthday));
				}
				if(type.equals("add"))//根据type判断按钮调用方法
				{
					studentService.addStudent(stu);
				}
				else
				{
					studentService.editStudent(stu);
				}
			}
			catch(Exception e)
			{
				 msg = "{'success':false,'message':'访问失败'}";
			}
			
			
			try {
				response.getWriter().print(msg);
				
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
		else
		{
			
			 msg = "{'success':false,'message':'访问异常'}";
			try {
				response.getWriter().print(msg);
				
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}

	}
	
	
	
}

 删除的action

package com.hanqi.action;

import java.io.IOException;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.hanqi.service.StudentService;

public class DeleteStudentAction {
	
	private StudentService studentService;
	
	HttpServletResponse response = ServletActionContext.getResponse();
	
	public void setStudentService(StudentService studentService) {
		this.studentService = studentService;
	}
	
	//接受删除的参数
		private String snos;
		
		
		public String getSnos() {
			return snos;
		}


		public void setSnos(String snos) {
			this.snos = snos;
		}

		
		//删除
		public void getDelete()
		{
			String msg = "{'success':true,'message':'删除成功'}";
			if(snos != null )
			{
				System.out.println("snos=="+snos);
				try
				{
					String [] sno = snos.split(",");//分割
					for(String s : sno)
					{
						studentService.deleteStudent(s);
					}
					
				}
				catch(Exception e)
				{
					 msg = "{'success':false,'message':'访问异常'}";
				}
				
				
				
			}
			else
			{
				
				 msg = "{'success':false,'message':'删除失败'}";
				 
			}
			try {
				response.getWriter().print(msg);
				
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}

}

  页面显示层

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 顺序不可以乱 -->
<!-- 1.jQuery的js包 -->
<script type="text/javascript" src="jquery-easyui-1.4.4/jquery.min.js"></script>
<!-- 2.css资源 -->
<link  rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/default/easyui.css">
<!-- 3. 图标资源 -->
<link  rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/icon.css">
<!-- 4.easyui的js包 -->
<script type="text/javascript" src="jquery-easyui-1.4.4/jquery.easyui.min.js"></script>
<!-- 5.本地语言 -->
<script type="text/javascript" src="jquery-easyui-1.4.4/locale/easyui-lang-zh_CN.js"></script>
</head>
<body>
<script type="text/javascript">

//把long型的日期转成yyyy-MM-dd
function getDate(date)
{
	//得到日期对象
	var d = new Date(date);
	//得到年  月  日
	var year = d.getFullYear();
	var month = (d.getMonth()+1);
	var day = d.getDate();
	//拼装
	var rtn = year+"-"+(month<10 ? "0"+month : month) + "-"+(day<10 ? "0"+day : day);
	return rtn;
}

var type = "add";//定义点击按钮,初始化是添加的

$(function(){
	
	$("#hh").datagrid({
		
		url:'studentAction.action',//Struts.xml的name
	//冻结列
	frozenColumns:[[
	                {field:'id',checkbox:true},//复选框
	                {field:'sno',title:'学号',100}  
	                ]],
	                
	              //定义列  列配置对象
	        	    columns:[[    

	        	        {field:'sname',title:'姓名',200,align:'center'},    
	        	        {field:'ssex',title:'性别',200,align:'center',
	        	        	formatter: function(value,row,index){
	        	        		if(value == '男'||value == 'f')
	        	        			{
	        	        				return '男';
	        	        			}
	        	        		else
	        	        			{
	        	        				return '女';
	        	        			}
	        	        	},
	        	        	styler:function(value,row,index){
	        	        		if(value=='男'|| value=='f')
	        	        			{
	        	        				return 'background-color:#ccccff;color:red;';

	        	        			}
	        	        	}
	        	        },
	        	        
	        	        
	        	        {field:'sbirthday',title:'生日',200,align:'right',
	        	        	formatter:function(value, row, index){
	        	        		 if(value && value !="")
	     		      			{
	     		      				return getDate(value);
	     		      			}
	     		      		else
	     		      			{
	     		      				return '无';
	     		      			}


	  		        	  }
	        	        
	        	        },
	        	       
	        	        {field:'sclass',title:'班级',200,align:'center'}
	        	        	
	        	        
	        	        
	        	    ]] ,
	        	    fitColumns:true,       //列自适应宽度,不能和冻结列同时设置为true
	        	    striped:true,           //斑马线
	        	    idField:'sno',     //主键列
	        	    rownumbers:true,        //显示行号
	        	    singleSelect:false,      //是否单选
	        	    pagination:true,         //分页栏
	        	    pageList:[8,16,24,32] ,  //每页行数选择列表
	        		pageSize:8   ,            //初始每页行数
	        		remoteSort:true  ,      //是否服务器端排序,设成false才能客户端排序
	        		sortName:'sno',//排序字段,基于服务器端排序
	        		sortOrder:'desc',//排序顺序
	        		//顶部工具栏
	        		toolbar:[
	        		         
							{
	 							iconCls:'icon-search',
								 text:'查询',
								 
								 handler:function(){
									 //序列化查询表单
									var f = $("#form2").serialize();
									//alert(f);
									 $("#hh").datagrid({url:"studentAction.action?"+f})},//把查询条件带给servlet
								 
							},
	        		         
	        		         {
	        		        	 iconCls:'icon-add',
	        		        	 text:'添加',
	        		        	 handler:function(){
	        		        		 type ="add";
	        		        		//$("#sno").textbox({readonly:false});
	        		        		 //清除表单旧数据
	        		        		 $("#form1").form("reset");//重置表单数据
	        		        		 
	        		        		 
	        		        		 $("#saveStu").dialog('open');
	        		        		 }
	        		         },
	        		         {
	        		        	 iconCls:'icon-edit',
	        		        	 text:'修改',
	        		        	 handler:function(){
	        		        		 type ="edit";
	        		        		 //判断是否选中一条数据
	        		        		 var data = $("#hh").datagrid('getSelected');
	        		        		 if(data)
	        		        			 {
	        		        			 	//alert(date);
	        		        			 	//设置主键字段只读
	        		        			 	$("#sno").textbox({readonly:true});
	        		        			 	$("#form1").form("reset");//重置表单数据
	        		        			 	$('#form1').form('load',{sno:data.sno,
	        		        			 		sname:data.sname,
	        		        			 		ssex:data.ssex,
	        		        			 		sbirthday:getDate(data.sbirthday),
	        		        			 		sclass:data.sclass
	        		        			 	});
	        		        			 	//$("#form1").form()
	        		        			 	
	        		        			 	 $("#saveStu").dialog({title:'修改学生'}).dialog('open');
	        		        			 	
	        		        			 }
	        		        		 else
	        		        			 {
	        		        			 	$.messager.show({
	        		        			 		title:'提示',
	        		        			 		msg:'请选中一条记录'
	        		        			 	});
	        		        			 }
	        		        		
	        		         	}
	        		         },
	        		         {
	        		        	 iconCls:'icon-delete',
	        		        	 text:'删除',
	        		        	 handler:function(){
	        		        //getSelections返回所有被选中的行,当没有记录被选中的时候将返回一个空数组。
	        		        		var data = $("#hh").datagrid('getSelections');
	        		        		if(data.length > 0)
	        		        			{
	        		        				//alert("条数="+data.length);
	        		        				$.messager.confirm(
	        		        					'确认','您确认要删除吗?',function(r){
	        		        						if(r)
	        		        							{
	        		        							 //alert("fff="+data[0].sno);
	        		        							 //使用数组保存选中数据的记录主键
	        		        							 var snos=[];
	        		        							 for(var i = 0 ; i<data.length;i++)
	        		        								 {
	        		        								 	snos [i]= data[i].sno;
	        		        								 }
	        		        							 //把要删除的主键传递给Servlet
	        		        							$.get("deleteStudent.action?snos="+snos,
	        		        								
	        		        								function(rtn){
	        		        								 
	        		        								 //alert(rtn);
	        		        								 //解析
	        		        								 var ms = eval("("+ rtn +")");
	        		        								 if(ms.success)
	        		        									 {
	        		        									 //若删除成功刷新页面
	        		        									 $("#hh").datagrid('reload');
	        		        									 }
	        		        								 $.messager.show({
	        		        									 title:'提示',
	        		        									 msg:ms.message
	        		        								 });
	        		        							 });
	        		        							}
	        		        					}
	        		        				);
	        		        			}
	        		        		else
	        		        			{
	        		        				$.messager.show({
	        		        					title:'提示',
	        		        					msg:'请选择一条要删除的数据'
	        		        				})
	        		        			}
	        		         	}
	        		         }
	        	 ],
	});
})




</script>
<div id="search" class="easyui-panel" title="查询条件" style="height:80px;100%"
data-options="{
iconCls:'icon-search',
collapsible:true}">
	<form id="form2"><br>
		<table  border="0"  style="margin-left:30px">
			<tr>
				<td>姓名:<input class="easyui-textbox" id="sname_s" name="sname_s"></td>
				<td>班级:<input class="easyui-textbox" id="sclass_s" name="sclass_s"></td>
			</tr>
		</table>
		
		
	</form>
</div>

<table id="hh"></table>

<div class="easyui-dialog" id="saveStu" style="400px; height:300px"
title="添加学生"
data-options="{
closed:true,
modal:true,
buttons:[{
text:'保存',
iconCls:'icon-save',
	handler:function(){
		$('#form1').form('submit',{
		
			url:'saveStudent.action?type='+ type,  //
			onSubmit:function(){
				var isValid = $(this).form('validate');
				if(!isValid)
				{
					$.messager.show({
						
						title:'消息',
						msg:'数据验证未通过'
					});
				}
				return isValid;	// 返回false终止表单提交
			},
			success:function(data){
				var msg = eval('('+ data +')');//eval是js的方法
			if(!msg.success)
				{
					alert(msg.message);
				}
				else
				{
				 $('#hh').datagrid('load');
					$.messager.show({
						
						title:'消息',
						msg:'数据验证通过,保存成功'
					});
					$('#saveStu').dialog('close');
				}
			
			}
		});
	}
		
			
	
},

{
text:'取消',
iconCls:'icon-cancel',
	handler:function(){$('#saveStu').dialog('close')},
}]
}">
	<form action="" id="form1" method="post"><br><br>
		<table border="0" width=100%>
			<tr>
				<td align="right" width="30%">学号:</td>
				<td>
					<input class="easyui-textbox" id="sno" name="sno" 
					data-options="required:true,validType:'length[3,8]'">
				</td>
			</tr>
			<tr>	
				<td align="right" width="30%">姓名:</td>
				<td>
					<input class="easyui-textbox" id="sname" name="sname" 
					data-options="required:true,validType:'length[2,3]'">
				</td>
			</tr>
			<tr>	
				<td align="right" width="30%">性别:</td>
				<td>
					<input type="radio" name="ssex" value="男" checked>男
					<input type="radio"  name="ssex" value="女">女
					
				</td>
			</tr>

			<tr>
				<td align="right" >生日:</td>
				<td>
					<input class="easyui-datebox" id="sbirthday" name="sbirthday" 
					data-options="required:false,">
				</td>
			</tr>
			
			<tr>
				<td align="right" >班级:</td>
				<td>
					<input class="easyui-textbox" id="sclass" name="sclass" 
					data-options="required:true,validType:'length[5,5]'">
				</td>
			</tr>
		</table>
		
	</form>

</div>
</body>
</html>

  

原文地址:https://www.cnblogs.com/liuyanzeng/p/6206332.html