社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
百度了很多关于struts2的看法,不可否认,它曾经是非常优秀的框架,但是spring实在强势,而且和亲儿子springmvc无缝结合,使得struts2逐渐退出历史舞台。本着会用就行的原则,而且感觉代码很杂乱,可能是我编码得到方式有问题,这部分不做深入了解,仅知晓其使用方法和核心技术。
struts2是基于MVC模式的web框架,主要有控制器组件(核心控制器和业务控制器)、模型组件(实现业务逻辑)、视图组件(html,jsp等)。
案例均为班级学生信息管理,详情见点我进入
班级信息管理使用注解实现,学生信息管理使用配置文件方式实现
个人比较倾向于注解方式,配置文件冗杂,而且更改查找不易。
此为固定配置
<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>
包含学生配置文件
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<include file="struts-student.xml" />
</struts>
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="studentlist" class="action.StudentAction" method="list" >
<result name="success">/student/list.jsp</result>
<result name="error">/student/index.jsp</result>
</action>
<action name="studentpreadd" class="action.StudentAction" method="preadd" >
<result name="success">/student/add.jsp</result>
<result name="error">/student/index.jsp</result>
</action>
<action name="studentadd" class="action.StudentAction" method="add" >
<result name="success">/student/add.jsp</result>
<result name="error">/student/index.jsp</result>
</action>
<action name="studentedit" class="action.StudentAction" method="edit" >
<result name="success">/student/edit.jsp</result>
<result name="error">/student/index.jsp</result>
</action>
<action name="studentupdate" class="action.StudentAction" method="update" >
<result name="success">/student/edit.jsp</result>
<result name="error">/student/index.jsp</result>
</action>
<action name="studentdelete" class="action.StudentAction" method="delete" >
<result name="success">/student/list.jsp</result>
<result name="error">/student/index.jsp</result>
</action>
</package>
</struts>
setter和getter方法已删除
public class StudentAction {
private List<Student> studentList=new ArrayList<Student>();
private String info;
private Student student;
private int id;
StudentDao studentDao =new StudentDao();
public String list()
{
try {
studentList=studentDao.queryAll();
return "success";
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
private List<Bj> bjList=new ArrayList<Bj>();
BjDao bjDao=new BjDao();
public String preadd()
{
try {
bjList=bjDao.queryAll();
return "success";
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
private String sno;
private String sname;
private String sex;
private int bjid;
private Bj bj;
public String add()
{
try {
student=new Student();
student.setSno(sno);
student.setSname(sname);
student.setSex(sex);
bj=bjDao.findBjById(bjid);
student.setBj(bj);
studentDao.add(student);
info="添加成功";
return this.preadd();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
public String delete()
{
try {
studentDao.delete(id);
return this.list();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
public String edit()
{
try {
bjList=bjDao.queryAll();
student=studentDao.findStudentById(id);
return "success";
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
public String update()
{
try {
student=new Student();
student.setId(id);
student.setSno(sno);
student.setSname(sname);
student.setSex(sex);
bj=bjDao.findBjById(bjid);
student.setBj(bj);
studentDao.update(student);
info="修改成功";
return this.edit();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
}
注解方式实现,故不需要配置其余的东西,只需要在web.xml中配置struts2即可。
public class BjAction {
private List<Bj> bjList = new ArrayList<Bj>();
BjDao bjDao = new BjDao();
private String info;
private String bjname;
private int id;
@Action(value = "bjlist", results = { @Result(name = "success", location = "/bj/list.jsp"),
@Result(name = "error", location = "/index.jsp") })
public String list() {
try {
bjList = bjDao.queryAll();
return "success";
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
@Action(value = "bjadd", results = { @Result(name = "success", location = "/bj/add.jsp"),
@Result(name = "error", location = "/index.jsp") })
public String add() {
try {
Bj bj = new Bj(bjname);
bjDao.add(bj);
info = "添加成功";
return "success";
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
@Action(value = "bjedit", results = { @Result(name = "success", location = "/bj/edit.jsp"),
@Result(name = "error", location = "/index.jsp") })
public String edit() {
try {
bj = bjDao.findBjById(id);
return "success";
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
@Action(value = "bjupdate", results = { @Result(name = "success", location = "/bj/edit.jsp"),
@Result(name = "error", location = "/index.jsp") })
public String update() {
try {
Bj bj = new Bj(id, bjname);
bjDao.update(bj);
info = "修改成功";
return "success";
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
private String delinfo;
@Action(value = "bjdelete", results = { @Result(name = "success", location = "/bj/list.jsp"),
@Result(name = "error", location = "/index.jsp") })
public String delete() {
try {
if(bjDao.kongbj(id)==1) {
delinfo="该班级还有学生,不能删除";
return this.list();
}
else {
bjDao.delete(id);
return this.list();
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return "error";
}
}
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!