第六章 Struts2深入学习一 上机.docx

上传人:b****3 文档编号:4937798 上传时间:2022-12-11 格式:DOCX 页数:35 大小:140.04KB
下载 相关 举报
第六章 Struts2深入学习一 上机.docx_第1页
第1页 / 共35页
第六章 Struts2深入学习一 上机.docx_第2页
第2页 / 共35页
第六章 Struts2深入学习一 上机.docx_第3页
第3页 / 共35页
第六章 Struts2深入学习一 上机.docx_第4页
第4页 / 共35页
第六章 Struts2深入学习一 上机.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

第六章 Struts2深入学习一 上机.docx

《第六章 Struts2深入学习一 上机.docx》由会员分享,可在线阅读,更多相关《第六章 Struts2深入学习一 上机.docx(35页珍藏版)》请在冰豆网上搜索。

第六章 Struts2深入学习一 上机.docx

第六章Struts2深入学习一上机

第6章

Struts2深入学习

(一)

上机内容:

1.struts.xml常量配置

2.解耦访问ServletAPI

3.动态方法调用

4.实现Action接口

5.实现ActionSupport类

6.自定义处理结果

7.模型驱动

8.国际化

上机目标:

1.掌握Struts2解耦访问ServletAPI的方法

2.掌握动态方法调用

3.理解自定义处理结果

4.掌握使用模型驱动来封装用户请求参数

5.掌握Struts2国际化

 

阶段1:

指导

训练内容

1.使用struts.xml常量配置,避免乱码

2.解耦访问ServletAPI

3.实现Action接口

4.模型驱动

需求说明

员工薪资管理系统主要实现以下功能

(1)显示所有员工信息

(2)根据部门、拼音码查询员工

(3)为某个员工执行加班操作

(4)为某个员工执行请假操作

(5)为某个员工执行旷工操作

(6)核算所有员工当月工资

实现思路

Ø创建系统所需的sql语句,代码如下:

createsequenceseq_emp--创建序列

startwith1

incrementby1;

createtabletb_dept--创建部门表

Idnumberprimarykey,--自动编号,主键

dnamevarchar2(10)notnull,--部门名称

dmastervarchar2(10)notnull--负责人

);

insertintotb_deptvalues(seq_emp.nextval,'研发部','张三');

insertintotb_deptvalues(seq_emp.nextval,'市场部','李四');

insertintotb_deptvalues(seq_emp.nextval,'人事部','王五');

createtabletb_emp--创建职工表

Idnumberprimarykey,--自动编号,主键

empIdvarchar2(10)notnull,--员工编号

enamevarchar2(10)notnull,--员工姓名

esexvarchar2

(2)notnull,--员工性别

postvarchar2(10)notnull,--职位

basepaynumber(6,2)notnull,--基本工资

deptIdnumbernotnull,--部门编号

pymvarchar2(10)notnull,--拼音码

constraintfk_deptIdforeignkey(deptId)referencestb_dept(id)

);

insertintotb_empvalues(seq_emp.nextval,'4201','胡小军','男','教员',1200.0,1,'HXJ');

insertintotb_empvalues(seq_emp.nextval,'4202','张天朋','男','教员',1200.0,1,'ZTP');

insertintotb_empvalues(seq_emp.nextval,'4203','孙小杰','女','人事专员',1300.0,3,'SXJ');

insertintotb_empvalues(seq_emp.nextval,'4204','孙悟空','男','人事专员',1300.0,3,'SWK');

insertintotb_empvalues(seq_emp.nextval,'4205','孙科人','女','市场专员',1400.0,2,'SKR');

insertintotb_empvalues(seq_emp.nextval,'4207','刘月芬','女','市场专员',1400.0,2,'LYF');

createtabletb_overtime--创建加班表

Idnumberprimarykey,--自动编号,主键

emptIdnumbernotnull,--加班员工编号

hoursnumber

(2)notnull,--加班时长

reasonvarchar2(50)notnull,--加班原因

overtimeDtmdatedefaultsysdate,--加班日期

constraintfk_overtime_emptIdforeignkey(emptId)referencestb_emp(Id)

);

createtabletb_PersonalLeave--创建请假表

Idnumberprimarykey,--自动编号,主键

emptIdnumbernotnull,--请假员工编号

daysnumber

(2)notnull,--请假天数

reasonvarchar2(50)notnull,--请假原因

PersonalLeaveTypenumber

(1)notnull,--请假类型0:

事假1:

病假

PersonalLeaveDtmdatedefaultsysdate,--请假日期

constraintfk_PersonalLeave_emptIdforeignkey(emptId)referencestb_emp(Id)

);

createtabletb_Absence--创建旷工表

Idnumberprimarykey,--自动编号,主键

emptIdnumbernotnull,--旷工员工编号

daysnumber

(1)notnull,--旷工天数

memovarchar2(50)notnull,--备注

absenceDtmdatedefaultsysdate,--旷工日期

constraintfk_Absence_emptIdforeignkey(emptId)referencestb_emp(Id)

Ø创建用于访问数据库的JavaBean,命名为BaseDAO,代码如下:

publicclassBaseDAO{

//定义数据源驱动

privatestaticfinalStringDRIVER="oracle.jdbc.driver.OracleDriver";

//定义连接字符串

privatestaticfinalStringURL="jdbc:

oracle:

thin:

@localhost:

1521:

soft";

//定义用户名

privatestaticfinalStringUID="ht";//定义密码

privatestaticfinalStringPWD="ht";//得到连接

publicstaticConnectiongetConnection(){

Connectioncon=null;

try{

Class.forName(DRIVER);//加载驱动

con=DriverManager.getConnection(URL,UID,PWD);//获得连接

}catch(Exceptione){

e.printStackTrace();

}

returncon;

}

//有结果,有参数的sql语句

publicstaticResultrunSelectSql(Stringsql,Object[]params){

Connectioncon=null;

PreparedStatementps=null;

ResultSetres=null;

Resultresult=null;

try{

con=getConnection();//得到连接

ps=con.prepareStatement(sql);//获取PreparedStatement对象

//设置参数

for(inti=0;i

ps.setObject(i+1,params[i]);

}

res=ps.executeQuery();//执行sql语句,获得ResultSet对象

result=ResultSupport.toResult(res);

}catch(Exceptione){

e.printStackTrace();

}finally{

try{

res.close();//关闭对象,释放资源

ps.close();

con.close();

}catch(Exceptione){

e.printStackTrace();

}

}

returnresult;

}

//执行没结果,有参数的sql语句

publicstaticbooleanrunUpdateSql(Stringsql,Object[]params){

Connectioncon=null;

PreparedStatementps=null;

try{

con=getConnection();//得到连接

ps=con.prepareStatement(sql);//获取PreparedStatement对象

//设置参数

for(inti=0;i

ps.setObject(i+1,params[i]);

}

ps.executeUpdate();//执行sql语句

returntrue;

}catch(Exceptione){

e.printStackTrace();

returnfalse;

}finally{

try{

ps.close();//关闭连接,释放资源

con.close();

}catch(Exceptione){

e.printStackTrace();

}

}

}

//执行有结果,没参数的sql语句

publicstaticResultrunSelectSql(Stringsql){

Connectioncon=null;

PreparedStatementps=null;

ResultSetres=null;

Resultresult=null;

try{

con=getConnection();//得到连接

ps=con.prepareStatement(sql);//获取PreparedStatement对象

res=ps.executeQuery();

result=ResultSupport.toResult(res);//把ResultSet对象转换成Result对象

}catch(Exceptione){

e.printStackTrace();

}finally{

try{

res.close();//关闭对象,释放资源

ps.close();

con.close();

}catch(Exceptione){

e.printStackTrace();

}

}

returnresult;

}

}

Ø创建用于处理”职工薪资管理系统”业务的JavaBean,命名为EmpService.java,代码如下:

publicclassEmpService

{

//得到所有职工

publicstaticMap[]getAllEmp()

{

//构造sql语句

Stringsql="selectemp.id,emp.empid,emp.ename,emp.esex,dept.dname,emp.post,emp.basepayfromtb_empemp,tb_deptdeptwhereemp.deptid=dept.id";

//执行sql语句

returnBaseDAO.runSelectSql(sql).getRows();

}

//得到所有的部门

publicstaticMap[]getAllDept()

{

//构造sql语句

Stringsql="select*fromtb_dept";

//执行sql语句

returnBaseDAO.runSelectSql(sql).getRows();

}

}

Ø创建用于处理职工薪资管理系统业务逻辑的父类控制器Action,命名为,BaseAction.java代码如下:

publicclassBaseActionextendsActionSupport{

//获取request对象

publicMapgetRequest(){

//通过ActionContext得到request对象

return(Map)ActionContext.getContext().get("request");

}

//获取session对象

publicMapgetSession(){

returnActionContext.getContext().getSession();

}

//获取application对象

publicMapgetApplication(){

return(Map)ActionContext.getContext().getApplication();

}

//获取response对象

publicHttpServletResponsegetResponse(){

//通过ServletActionContext类获取HttpServletResponse对象。

HttpServletResponseresponse=ServletActionContext.getResponse();

//设置响应头与字符编码

response.setContentType("text/html;charset=gbk");

response.setCharacterEncoding("gbk");

returnresponse;

}

}

Ø创建用于处理职工薪资管理系统业务逻辑的控制器Action,命名为,EmpAction.java代码如下:

publicclassEmpActionextendsBaseActionimplementsAction

{

//默认执行显示所有职工信息

publicStringexecute()

{

//调用业务层,获取所有职工信息

Map[]emps=EmpService.getAllEmp();

//调用业务层,获取所有部门信息

Map[]depts=EmpService.getAllDept();

//存储到request范围内

this.getRequest().put("emps",emps);

//存储到session范围内

this.getSession().put("depts",depts);

//转发到index.jsp页面

returnthis.SUCCESS;

}

}

Ø创建用于提供显示界面的JSP页面,命名为index.jsp,代码如下:

人事管理系统-员工薪资管理
部门:

全部

全部

--从数据库中加载所有部门信息-->

forEachvar="dept"items="${depts}">

${dept.dname}

forEach>

拼音码:

submitvalue="查询"method="doQueryEmp"/>

iftest="${!

emptyemps}">

—如果存在记录-->

forEachvar="emp"items="${emps}">

${emp.empid}

${emp.ename}

${emp.esex}

${emp.dname}

${emp.post}

${emp.basepay}

forEach>

url(images/nh-bg.gif)">

姓名性别所属部门职位基本工资操作

id=${emp.id}&empid=${emp.empid}"target="_blank">加班

id=${emp.id}&empid=${emp.empid}"target="_blank">请假

id=${emp.id}&empid=${emp.empid}"target="_blank">旷工

当月薪资明细

if>

Ø创建起始的JSP页面,命名为start.jsp,代码如下:

--转发到emp控制器-->

forwardpage="emp.action"/>

Ø配置struts.xml文件,代码如下:

--配置常量解决乱码,与页面布局-->

--Struts2的Action都必须配置在package里面-->

--继承自默认包-->

--定义一个login的Action类,实现类为LoginAction-->

--定义结果与视图资源的映射关系-->

/index.jsp

Ø配置web.xml文件,代码如下:

--配置Struts2的核心控制器FilterDispatcher-->

--filter名称-->

struts2

--filter实现类-->

org.apache.struts2.dispatcher.FilterDispatcher

--通过init-param配置节重新指定Struts2配置文件的位置-->

config

--指定struts.xml在WEB-INF目录下-->

struts-default.xml,struts-plugin.xml,../struts.xml

--配置filter的映射部分-->

--filter名称-->

struts2

--所有用户请求,都会被FilterDispatcher拦截-->

/*

REQUEST

FORWARD

Ø运行start.jsp页面,效果如图2.6.1:

图2.6.1运行start.jsp页面

练习

需求说明

完成员工薪资管理系统查询显示功能,可根据部门和拼音码进行组合查询。

实现思路

Ø在处理

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1