struts只用extends ActionSupport
设置 jsp默认encoding
jsp链接根据服务器的url地址链接,action路径,而非真正地址
处理路径问题,倍简单,全用绝对路径
jsp里面,/斜杠代表服务器根路径,所以加上项目名
basePath整个项目路径+/
"<%=bastPath%>index.jsp"
head中可以指定base ,后面默认加上base
<base href="<%=bastPath%>" />
用的工具中bug可多了,刷新重启重装
redirect方式不需要,忘了他!
<result name="error">/user_add_error.jsp</result>
add方法中add方法,登陆不成功返回error字符串
版本问题
jdk1.5中,实现方法不可以@override 1.6可以
action接受参数,第一种,action中写明属性名,url地址中直接传,一一对应
action往传值调的是方法,而非属性直接赋值
第二种 域模型
action中存实体类
user!add?user.name=..&age=..
相当于先setUser 再setName
dto数据传输对象 解决域模型中确认密码无属性对应问题
加一层在user与action之间,使用dto对象创建user对象
struts2中把action的属性成为field
校验时this.addFieldError("name","name is error");
此时可以在另一个jsp中把次field error取出来
<s:fielderror fieldName="name" theme="simple"/>自动代码中添加ul li
此处设计不实用,过于强制,用的不多
不如自己写错误信息
<s:property>专取Value Stack 与Stack Context属性
map中key可对应多个value errors.name[0] value算是一个数组
addFieldError中
<form name="f" action="" method="post">
用户名:<input type="text" name="name"/>
密码:<input type="text" name="password"/>
<br />
<input type="button" value="submit1" οnclick="javascript:document.f.action='login/login1';document.f.submit();" />
<input type="button" value="submit2" οnclick="javascript:document.f.action='login/login2';document.f.submit();" />
</form>
Context周围环境,中包含各种对象
Map中放值,用put方法 key value
使用property取到map中传过来的值或者getAttribute
request 全复制到httprequest中
Stack Context 使用#key访问 debug中上面直接拿,下面加#
第二种 web元素取 最常用 application基本不用
IoC/DI设计思想 inverse of control控制反转,依赖struts2外界环境注入map request 即set方法
本来自己控制request等,现在由别人控制,所以叫控制反转
没事别自己初始化,全交给struts
extends implements aware 加泛型
requestaware 知道request的存在
未初始化,给set方法
public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
struts.xml中
<struts>
<constant name="struts.devMode" value="true" />
<include file="login.xml" />
</struts>
src下,不让大家共用一个struts文件,分成模块,自己写自己模块配置,不影响其他人
最后统一包含
${}从Value Stack取值
map
<ol>
<li>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" >
<s:property value="key"/> | <s:property value="value"/> <br />
</li>
<li>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
<s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
</s:iterator>
</li>
</ol>
设置 jsp默认encoding
jsp链接根据服务器的url地址链接,action路径,而非真正地址
处理路径问题,倍简单,全用绝对路径
jsp里面,/斜杠代表服务器根路径,所以加上项目名
basePath整个项目路径+/
"<%=bastPath%>index.jsp"
head中可以指定base ,后面默认加上base
<base href="<%=bastPath%>" />
用的工具中bug可多了,刷新重启重装
redirect方式不需要,忘了他!
<result name="error">/user_add_error.jsp</result>
add方法中add方法,登陆不成功返回error字符串
版本问题
jdk1.5中,实现方法不可以@override 1.6可以
action接受参数,第一种,action中写明属性名,url地址中直接传,一一对应
action往传值调的是方法,而非属性直接赋值
第二种 域模型
action中存实体类
user!add?user.name=..&age=..
相当于先setUser 再setName
dto数据传输对象 解决域模型中确认密码无属性对应问题
加一层在user与action之间,使用dto对象创建user对象
struts2中把action的属性成为field
校验时this.addFieldError("name","name is error");
此时可以在另一个jsp中把次field error取出来
<s:fielderror fieldName="name" theme="simple"/>自动代码中添加ul li
此处设计不实用,过于强制,用的不多
不如自己写错误信息
<s:property>专取Value Stack 与Stack Context属性
map中key可对应多个value errors.name[0] value算是一个数组
addFieldError中
<form name="f" action="" method="post">
用户名:<input type="text" name="name"/>
密码:<input type="text" name="password"/>
<br />
<input type="button" value="submit1" οnclick="javascript:document.f.action='login/login1';document.f.submit();" />
<input type="button" value="submit2" οnclick="javascript:document.f.action='login/login2';document.f.submit();" />
</form>
Context周围环境,中包含各种对象
Map中放值,用put方法 key value
使用property取到map中传过来的值或者getAttribute
request 全复制到httprequest中
Stack Context 使用#key访问 debug中上面直接拿,下面加#
第二种 web元素取 最常用 application基本不用
IoC/DI设计思想 inverse of control控制反转,依赖struts2外界环境注入map request 即set方法
本来自己控制request等,现在由别人控制,所以叫控制反转
没事别自己初始化,全交给struts
extends implements aware 加泛型
requestaware 知道request的存在
未初始化,给set方法
public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
struts.xml中
<struts>
<constant name="struts.devMode" value="true" />
<include file="login.xml" />
</struts>
src下,不让大家共用一个struts文件,分成模块,自己写自己模块配置,不影响其他人
最后统一包含
${}从Value Stack取值
map
<ol>
<li>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" >
<s:property value="key"/> | <s:property value="value"/> <br />
</li>
<li>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
<s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
</s:iterator>
</li>
</ol>