xsi=""xmlns=""xsi:
schemaLocation=""id="WebApp_ID"version="3、0">
javaweb16ValidateDemo
struts2
org、apache、struts2、dispatcher、ng、filter、StrutsPrepareAndExecuteFilter
struts2
/*
2.struts、xml文件配置
对action的拦截及使用com、javaweb、action、RegisterAction处理。
xmlversion="1、0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2、3//EN"
"">
--定义register的Action,其实现类为com、javaweb、action、RegisterAction-->
--定义处理结果与视图资源之间的关系-->
/result、jsp
/register2、jsp
3.Action的实现
主要核心处理功能。
packagecom、javaweb、action;
//导入关键类
publicclassRegisterActionextendsActionSupport{
privateStringusername;
privateStringpassword;
privateStringrepassword;
//实现getter与setter以及构造器部分略
publicvoidvalidate(){
//判断用户名就是否输入,如果输入了再判断格式就是否正确
if(username==null||""、equals(username)){
this、addFieldError("username","用户名必须输入");
}elseif(!
Pattern、matches("\\w{6,20}",username、trim())){
this、addFieldError("username","用户名必须就是字母与数字,长度为6到20之间");
}
//判断密码就是否输入,如果输入了再判断格式就是否正确
if(password==null||""、equals(password)){
this、addFieldError("password","密码必须输入");
}elseif(!
Pattern、matches("\\w{6,20}",password、trim())){
this、addFieldError("password","密码必须就是字母与数字,长度为6到20之间");
}
//判断确认密码就是否输入,如果输入了再判断格式就是否正确
if(repassword==null||""、equals(repassword)){
this、addFieldError("repassword","确认密码必须输入");
}elseif(!
Pattern、matches("\\w{6,20}",repassword、trim())){
this、addFieldError("repassword","确认密码必须就是字母与数字,长度为6到20之间");
}
//判断确认密码与密码就是否相同
if(password!
=null&&repassword!
=null&&!
repassword、equals(password)){
this、addFieldError("repassword","确认密码与密码必须相同");
}
//判断年龄就是否合法
if(age<0||age>130){
this、addFieldError("age","请输入有效的年龄");
}
//判断出生日期就是否合法
Calendarstart=Calendar、getInstance();
Calendarend=Calendar、getInstance();
start、set(1900,1,1);
end、set(2010,1,1);
if(birth!
=null&&(birth、after(end、getTime())||birth、before(start、getTime()))){
this、addFieldError("birth","请输入有效的出生日期");
}
//判断邮箱地址就是否合法
if(email!
=null&&!
""、equals(email)&&email!
=""&&!
Pattern、matches("[a-zA-Z][a-zA-Z0-9、_-]*@([a-zA-Z0-9-_]+\\、)+(com|gov|net|com\\、cn|edu\\、cn)",email)){
this、addFieldError("email","请输入正确的邮箱地址");
}
}
publicStringexecute()throwsException{
returnSUCCESS;
}
}
4.
运行结果
实验二持久化层hibernate
1.实验类型
验证类型
2.实验目的
掌握hibernate访问数据库,以及对数据库进行操作。
3.实验要求
1.实现对product表的插入查询
2.编写product表的操作的junit的测试
4.实验内容
1.hibernate、cfg、xml文件配置
该文件就是hibernate最重要的一个配置文件。
在这里配置了连接数据库的信息,比如数据库连接字符串,驱动,用户名,用户密码还有数据库方言等等。
还有指定映射文件。
DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3、0//EN"
"">
--数据库连接URL-->
jdbc:
mysql:
//localhost/javaweb
--数据库连接驱动-->
com、mysql、jdbc、Driver
--数据库用户名-->
root
--数据库用户密码-->
admin
--数据库方言-->
org、hibernate、dialect、MySQLDialect
--指定映射文件-->
2.实体类与映射文件
1.实体类product
packagecom、javaweb、ch17、hibernate;
publicclassProduct{
//产品ID
privateStringid;
//产品名称
privateStringname;
//产品价格
privatedoubleprice;
//对每一个属性设置getter与setter方法略。
}
2.映射文件Product、hbm、xml
xmlversion="1、0"?
>
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3、0//EN"
"">
--每个class对应一个持久化对象-->
--id元素用来定义主键标识,并指定主键生成策略-->
--定义其她属性-->
3.创建数据库操作
在CreateDB、java文件就是创建数据库的主入口。
importorg、hibernate、tool、hbm2ddl、SchemaExport;
publicclassCreateDB{
publicstaticvoidmain(String[]args){
//读取配置文件hibernate、cfg、xml
Configurationcfg=newConfiguration()、configure();
//创建SchemaExport实例
SchemaExportsExport=newSchemaExport(cfg);
//创建数据库表
sExport、create(true,true);
}
}
4.Product的增删查
这个自定义实现一个操作操作的工具类。
publicclassHibernateUtil{
privatestaticSessionFactoryfactory;
static{
//读取配置文件hibernate、cfg、xml
Configurationcfg=newConfiguration()、configure();
//创建SessionFactory
factory=cfg、buildSessionFactory();
}
//获得SessionFactory实例
publicstaticSessionFactorygetSessionFactory(){
returnfactory;
}
//获得Session实例
publicstaticSessiongetSession(){
returnfactory、openSession();
}
//关闭指定Session
publicstaticvoidcloseSession(Sessionsession){
if(session!
=null){
if(session、isOpen()){
session、close();
}}}
}
增加product的操作
publicclassInsertProduct{
publicstaticvoidmain(String[]args){
//创建Session
Sessionsession=HibernateUtil、getSession();
//开启事务
session、beginTransaction();
//实例化一个Product
Productproduct=newProduct();
product、setId("0511234");
product、setName("冰箱");
product、setPrice(1250、00);
session、save(product);//保存数据
session、getTransaction()、commit();//事务提交
ibernateUtil、closeSession(session);
}
}
查询所有信息
publicclassQueryAllProduct{
publicstaticvoidmain(String[]args){
Sessionsession=HibernateUtil、getSession();
Productp=null;
Stringhql="FROMProductaspro";//使用HQL查询
Queryq=session、createQuery(hql);//通过Query方法查询
Listlist=q、list();//查询结果保存到list中
Iteratoriter=list、iterator();//遍历就是否存在该id的产品,如果存在则进行输出
while(iter、hasNext()){
p=(Product)iter、next();
System、out、println("id:
"+p、getId()+"name:
"+p、getName()+"price:
"+p、getPrice());
}
//关闭session
ibernateUtil、closeSession(session);}
}
其她的删除与修改类似。
3.运行结果
完成插入删除后的结果。
实验三SSM整合实验
1.实验类型
验证类型
2.实验目的
掌握ssh的整合过程,能够使用ssh创建网站。
3.实验要求
1.使用hibernate实现数据库表的插入与查询
2.用Struts2实现RESTAPI
3.使用Spring实现service的注入。
4.实验内容
1.applicationContext、xml文件配置
xmlversion="1、0"encoding="UTF-8"?
>
--定义数据源Bean-->
com、mysql、jdbc、Driver
jdbc:
mysql:
//localhost/javaweb
root
admin
--定义SessionFactory-->
class="org、springframework、orm、hibernate3、LocalSessionFactoryBean">
org、hibernate、dialect、MySQLDialect
false
com/javaweb/po/User、hbm、xml
--定义hibernateTemplate-->
--配置DAO组件-->
2.struts、xml文件配置
xmlversion="1、0"encoding="UTF-8"?
>
…、、
--struts为配置文件根元素-->
--Action必须放在指定的包名空间中-->
--定义处理结果与视图资源之间的关系-->
/showAll、jsp
--定义处理结果与视图资源之间的关系-->
/showAll、action
--定义处理结果与视图资源之间的关系-->
/showAll、action
/add、jsp
/add、jsp
--定义处理结果与视图资源之间的关系-->
/showAll、action
/update、jsp
/update、jsp
--定义处理结果与视图资源之间的关系-->
/showUser、jsp
3.工程代码结构分析
、javaweb、po层
业务实体类都放在该包里面。
比如用户的类与映射文件都放在这里。
、javaweb、dao