package org.action;
import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.dao.XsDao;
import org.dao.ZyDao;
import org.dao.imp.KcDaoImp;
import org.dao.imp.XsDaoImp;
import org.dao.imp.ZyDaoImp;
import org.model.Dlb;
import org.model.Kcb;
import org.model.Xsb;
import org.model.Zyb;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class XsAction extends ActionSupport{
XsDao xsDao;
//定义学生对象
private Xsb xs;
//定义课程对象
private Kcb kcb;
//用于获取照片文件
private File zpFile;
//第一专业对象
private Zyb zyb;
//下面生成它们的get和set方法
public File getZpFile() {
return zpFile;
}
public void setZpFile(File zpFile) {
this.zpFile = zpFile;
}
public Kcb getKcb() {
return kcb;
}
public void setKcb(Kcb kcb) {
this.kcb = kcb;
}
public Zyb getZyb() {
return zyb;
}
public void setZyb(Zyb zyb) {
this.zyb = zyb;
}
public Xsb getXs() {
return xs;
}
public void setXs(Xsb xs) {
this.xs = xs;
}
//默认情况下,用该方法 ,获得当前学生的个人信息
public String execute() throws Exception {
//获得Session对象
Map session=(Map)ActionContext.getContext().getSession();
//从Session中取出当前用户
Dlb user=(Dlb) session.get("user");
//创建XsDao接口对象
xsDao=new XsDaoImp();
//根据登录学号得到该学生信息
Xsb xs=xsDao.getOneXs(user.getXh());
Map request=(Map)ActionContext.getContext().get("request");
//保存
request.put("xs", xs);
return SUCCESS;
}
//读取照片信息
public String getImage()throws Exception{
xsDao=new XsDaoImp();
//得到照片的字节数组
byte[] zp=xsDao.getOneXs(xs.getXh()).getZp();
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType("image/jpeg");
//得到输出流
ServletOutputStream os=response.getOutputStream();
if(zp!=null&&zp.length>0){
for(int i=0;i<zp.length;i++){
os.write(zp[i]);
}
}
//不去向任何任何页面
return NONE;
}
//这里后面还要加入其他方法,这里先不列出,用到后会列出代码,就要加入到这里
//进入修改学生信息页面
public String updateXsInfo()throws Exception{
//获取当前用户对象
Map session=(Map)ActionContext.getContext().getSession();
Dlb user=(Dlb) session.get("user");
xsDao=new XsDaoImp();
ZyDao zyDao=new ZyDaoImp();
//取出所有专业信息,因为在修改学生信息时,专业栏是下拉列表,
//选择专业还不是学生自己随便填写
List zys=zyDao.getAll();
//得到当前学生的信息
Xsb xs=xsDao.getOneXs(user.getXh());
Map request=(Map)ActionContext.getContext().get("request");
request.put("zys", zys);
request.put("xs", xs);
return SUCCESS;
}
//修改学生信息
public String updateXs()throws Exception{
xsDao =new XsDaoImp();
ZyDao zyDao=new ZyDaoImp();
//创建一个学生对象,用于存放要修改的学生信息
Xsb stu=new Xsb();
//设置学生学号
stu.setXh(xs.getXh());
//由于没有修改学生对应的选修的课程所以直接取出不用改变
//引文Hibernate的级联到第三张表所以要设置,
//如果不设置,会认为设置为空,会把连接表中有关内容删除
Set list=xsDao.getOneXs(xs.getXh()).getKcs();
//设置学生对应多项课程的Set
stu.setKcs(list);
//设置用户填写的姓名
stu.setXm(xs.getXm());
//性别
stu.setXb(xs.getXb());
//出生时间
stu.setCssj(xs.getCssj());
//总学分
stu.setZxf(xs.getZxf());
//备注
stu.setBz(xs.getBz());
Zyb zy=zyDao.getOneZy(zyb.getId());
//专业,这里要设置对象。所以下拉列表中传值是要传专业的ID
stu.setZyb(zy);
//处理照片信息
if(this.getZpFile()!=null){
//到得输入流
FileInputStream fis=new FileInputStream(this.getZpFile());
//创建大小为fis.available()的字节数组
byte[] buffer=new byte[fis.available()];
//把输入流读到字节数组中
fis.read(buffer);
stu.setZp(buffer);
}
//修改
xsDao.update(stu);
return SUCCESS;
}
//得到学生选修的课程
public String getXsKcs() throws Exception{
Map session=(Map)ActionContext.getContext().getSession();
Dlb user=(Dlb) session.get("user");
String xh=user.getXh();
//得到当前学生的信息
Xsb xsb=new XsDaoImp().getOneXs(xh);
//取出选修的课程Set
Set list=xsb.getKcs();
Map request=(Map) ActionContext.getContext().get("request");
//保存
request.put("list",list);
return SUCCESS;
}
//退选课程
public String deleteKc()throws Exception{
Map session=(Map)ActionContext.getContext().getSession();
String xh=((Dlb)session.get("user")).getXh();
xsDao=new XsDaoImp();
Xsb xs2=xsDao.getOneXs(xh);
Set list=xs2.getKcs();
Iterator iter=list.iterator();
//取出所有选择的课程进行迭代
while(iter.hasNext()){
Kcb kc2=(Kcb)iter.next();
//如果遍历到退选的课程的课程号就从list中删除
if(kc2.getKch().equals(kcb.getKch())){
iter.remove();
}
}
//设置课程的Set
xs2.setKcs(list);
xsDao.update(xs2);
return SUCCESS;
}
//选定课程
public String selectKc()throws Exception{
Map session=(Map)ActionContext.getContext().getSession();
String xh=((Dlb)session.get("user")).getXh();
xsDao=new XsDaoImp();
Xsb xs3=xsDao.getOneXs(xh);
Set list=xs3.getKcs();
Iterator iter=list.iterator();
//选修课程时先遍历已经选的课程,如果在已经选修的课程中找到就返回ERROR
while(iter.hasNext()){
Kcb kc3=(Kcb)iter.next();
if(kc3.getKch().equals(kcb.getKch())){
return ERROR;
}
}
//如果没找到,就添加到集合中
list.add(new KcDaoImp().getOneKc(kcb.getKch()));
xs3.setKcs(list);
xsDao.update(xs3);
return SUCCESS;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JavaEE基础实用教程第二版源代码
共490个文件
java:85个
class:84个
jar:81个
1星 需积分: 14 66 下载量 138 浏览量
2016-01-05
19:57:32
上传
评论 2
收藏 22.04MB ZIP 举报
温馨提示
JavaEE基础实用教程第二版源代码,作者是郑阿奇,书上每个例子的代码都有,适合初学者使用,由于只能上传小于60MB的文件,所以分开传了,一个是上集,一个是下集
资源推荐
资源详情
资源评论
收起资源包目录
JavaEE基础实用教程第二版源代码 (490个子文件)
XsAction.class 6KB
DB.class 4KB
HibernateSessionFactory.class 3KB
HibernateSessionFactory.class 2KB
HibernateSessionFactory.class 2KB
Xsb.class 2KB
UploadAction.class 2KB
MainServlet.class 2KB
AddServlet.class 2KB
Kcb.class 2KB
Test.class 2KB
DBConn.class 2KB
ZyDaoImp.class 2KB
KcDaoImp.class 2KB
XsDaoImp.class 2KB
Test.class 2KB
Kcb.class 2KB
Book.class 2KB
Zyb.class 1KB
Xsb.class 1KB
Student.class 1KB
DlDaoImp.class 1KB
InputServlet.class 1KB
RegisterServlet.class 1KB
LyTable.class 1KB
LoginAction.class 1KB
SaveAction.class 1KB
LogBeforeAdvice.class 1KB
LogBeforeAdvice.class 1KB
HelloWorld.class 1KB
Course.class 1KB
Login.class 1KB
Detail.class 1KB
StrutsAction.class 1KB
DlDaoImp.class 1KB
Dlb.class 1KB
Dlb.class 1KB
Test.class 1KB
HelloProxy.class 1KB
HelloProxy.class 1KB
LogHandler.class 1KB
LogHandler.class 1KB
ProxyDemo.class 1KB
ProxyDemo.class 1KB
Person.class 1004B
Room.class 1003B
KcAction.class 965B
MyInterceptor.class 954B
SpringAOPDemo.class 906B
User.class 898B
Test.class 889B
LoginAction.class 851B
SpringAOPDemo.class 847B
HelloSpeaker.class 847B
Test.class 790B
HelloSpeaker.class 698B
HelloSpeaker.class 698B
HelloSpeaker.class 697B
HelloSpeaker.class 697B
HelloSpeaker.class 697B
Chinese.class 665B
American.class 618B
Chinese.class 615B
ProxyDemo.class 549B
ProxyDemo.class 549B
TestBean.class 538B
Student.class 496B
English.class 384B
MethodBeforeAdvice.class 251B
MethodBeforeAdvice.class 251B
ZyDao.class 195B
KcDao.class 194B
XsDao.class 194B
DlDao.class 174B
IHello.class 161B
Language.class 135B
DlDao.class 135B
IHello.class 133B
IHello.class 133B
Ihello.class 133B
IHello.class 133B
Ihello.class 133B
Human.class 131B
Human.class 113B
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 1KB
.classpath 929B
.classpath 838B
.classpath 808B
.classpath 665B
.classpath 622B
.classpath 498B
.classpath 449B
.classpath 449B
.classpath 449B
.classpath 431B
.classpath 340B
共 490 条
- 1
- 2
- 3
- 4
- 5
资源评论
- gxc_19922017-02-24假的,第一版的源代码
- ACe_shmily2016-11-10这明显是第一版的源代码
小李-探花
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于双向 LSTM 中文微博情感分类项目功能实现
- PHP新闻管理系统设计与实现 毕业设计
- STM32单片机FPGA毕设电路原理论文报告汽车电动助力转向单片机控制系统设计与试验研究
- STM32单片机FPGA毕设电路原理论文报告气压传感器神经网络算法及单片机实现
- 西南交大-大学物理A作业-2019-带参考答案
- c++语言大作业,校区人员管理系统framework.zip
- 多目标优化算法集合,包含使用手册
- c语言程序设计大作业 课程设计 高分大作业98分.zip
- STM32单片机FPGA毕设电路原理论文报告频率的测量在单片机设计中的应用
- 音频转码工具(用于将微信语音 amr 格式转换为 mp3 格式以便在 html5 的 audio 标签中进行播放).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功