Struts2学习笔记(1)
2017-01-08 10:35
246 查看
Struts2:
1)实现MVC的模式,结构清晰
2)具有丰富的标签(tag)
3)通过配置文件页面导航,便于后期维护
4)与Servlet API松散耦合,便于测试
例:
<package name="hello"(用于子包的继承) namespace="/"(action的根目录) extends="struts-default" (继承,此处为继承默认包)>
<action name="he"(在网页中的action的名称) class="..."(action所对应的类)method=""(该action所对应的方法,若方法为execute,可不写)>
<result name=""(action方法所返回的字符串)>/index.jsp</result>(根据返回字符串选择跳转的页面)
</action></package>
创建Action类:(依情况选择)1)普通Java类:编写public String execute()方法2)实现Action接口,重写execute()方法3)继承ActionSupport类,重写execute()方法(该类中功能较为全面,可能会有冗余)Action:1)控制业务逻辑(如果业务逻辑复杂,可以把业务逻辑构建为业务类)2)返回结果字符串3)方便处理数组Action接受参数:一、Struts2提供了接口用于Action与网页交互,通过将表单的参数名与action的属性名设置相同,并封装SetXXX与GetXXX方法。中文乱码:
<constant name="struts.i18n.encoding" value="utf-8"/>
可以在Struts配置文件中,设置开发模式,使得输出更多日志信息或debug信息(当为false时,为产品模式(proMode)):
<constant name="struts-devMode" value="true"/>
页面显示:
action所传数据:
<%@ taglib prefix="s" uri="struts-tags" %>
<s:property name="" value="" />(显示数据)
上述做法不好之处是:如果实体类的属性非常多,那么Action中也要定义相同的属性。
二、
通过JavaBean方式:
将模型数据从Action中分离出来
1)定义实体类,并为实体类添加属性以及SetXXX与GetXXX方法,名字与页面表单属性名相同
2)为Action添加尸体属性以及SetXXX与GetXXX方法
3)修改表单参数name为实体对象名.属性名
4)取值通过<s:property value="对象名.属性名"/>的形式
这种做法不好的地方是:JSP页面上表单域中的命名变得太长
三、
通过ModelDriven方式,让action类实现一个ModelDriven接口,同时实现接口中的方法:getModel()。
public class DeptAction implements ModelDriven<DeptAction>{
private Dept dept;
@Override
public DeptAction getModel() {
// TODO Auto-generated method stub
return null;
}
public String add(){
return "success";
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
}
Jsp的代码:
<form action="dept.action" method="post">
<input type="hidden" name="method:add"> deptno:<input
type="text" name="deptno"><br /> dname:<input type="text"
name="dname"><br /> loc:<input type="text" name="loc"><br />
<input type="submit" name="submit" value="添加部门">
</form>
相较前两种,action和jsp都较为简单。
相关机制:http://blog.csdn.net/li_tengfei/article/details/6098145
编写struts.xml时无提示,可查看:
http://blog.csdn.net/u012561176/article/details/43878067
1)实现MVC的模式,结构清晰
2)具有丰富的标签(tag)
3)通过配置文件页面导航,便于后期维护
4)与Servlet API松散耦合,便于测试
例:
<package name="hello"(用于子包的继承) namespace="/"(action的根目录) extends="struts-default" (继承,此处为继承默认包)>
<action name="he"(在网页中的action的名称) class="..."(action所对应的类)method=""(该action所对应的方法,若方法为execute,可不写)>
<result name=""(action方法所返回的字符串)>/index.jsp</result>(根据返回字符串选择跳转的页面)
</action></package>
创建Action类:(依情况选择)1)普通Java类:编写public String execute()方法2)实现Action接口,重写execute()方法3)继承ActionSupport类,重写execute()方法(该类中功能较为全面,可能会有冗余)Action:1)控制业务逻辑(如果业务逻辑复杂,可以把业务逻辑构建为业务类)2)返回结果字符串3)方便处理数组Action接受参数:一、Struts2提供了接口用于Action与网页交互,通过将表单的参数名与action的属性名设置相同,并封装SetXXX与GetXXX方法。中文乱码:
<constant name="struts.i18n.encoding" value="utf-8"/>
可以在Struts配置文件中,设置开发模式,使得输出更多日志信息或debug信息(当为false时,为产品模式(proMode)):
<constant name="struts-devMode" value="true"/>
页面显示:
action所传数据:
<%@ taglib prefix="s" uri="struts-tags" %>
<s:property name="" value="" />(显示数据)
上述做法不好之处是:如果实体类的属性非常多,那么Action中也要定义相同的属性。
二、
通过JavaBean方式:
将模型数据从Action中分离出来
1)定义实体类,并为实体类添加属性以及SetXXX与GetXXX方法,名字与页面表单属性名相同
2)为Action添加尸体属性以及SetXXX与GetXXX方法
3)修改表单参数name为实体对象名.属性名
4)取值通过<s:property value="对象名.属性名"/>的形式
这种做法不好的地方是:JSP页面上表单域中的命名变得太长
三、
通过ModelDriven方式,让action类实现一个ModelDriven接口,同时实现接口中的方法:getModel()。
public class DeptAction implements ModelDriven<DeptAction>{
private Dept dept;
@Override
public DeptAction getModel() {
// TODO Auto-generated method stub
return null;
}
public String add(){
return "success";
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
}
Jsp的代码:
<form action="dept.action" method="post">
<input type="hidden" name="method:add"> deptno:<input
type="text" name="deptno"><br /> dname:<input type="text"
name="dname"><br /> loc:<input type="text" name="loc"><br />
<input type="submit" name="submit" value="添加部门">
</form>
相较前两种,action和jsp都较为简单。
相关机制:http://blog.csdn.net/li_tengfei/article/details/6098145
编写struts.xml时无提示,可查看:
http://blog.csdn.net/u012561176/article/details/43878067
相关文章推荐
- Spring3事务管理——使用原始的TransactionProxyFactoryBean
- Struts2基础总结-2
- SpringMVC运用spring表达式出现的异常
- Java位运算在程序设计中的使用:位掩码(BitMask)
- springboot笔记(2)springboot-Mybatis使用
- Java开发中读取XML与properties配置文件的方法
- strutsdemo
- Spring事务隔离级别和事务的传播属性
- 使用Ajax进行文件与其他参数的上传功能(java开发)
- MyEclipse工程项目转到IDEA
- java将流转换成字符串
- Java 多线程:synchronized
- 《JAVA与模式》之观察者模式
- Java程序:自动生成一个n阶矩阵
- 【管我原创不原创,评论啊】自学的Springboot
- Java单元测试框架Junit
- spring容器创建bean时对属性中含有日期的处理方法
- Struts2学习笔记
- JAVA中关于double数据四舍五入的方法
- Java中子类重写父类方法的思想本质!