ssh框架文档格式.docx
《ssh框架文档格式.docx》由会员分享,可在线阅读,更多相关《ssh框架文档格式.docx(68页珍藏版)》请在冰点文库上搜索。
height:
400px;
border:
1pxsolidred;
/*居中显示*/
position:
absolute;
left:
50%;
margin-left:
-500px;
}
--------或-------------------
margin:
0pxauto;
/*firefox居中*/
body{
padding:
0px;
center;
/*IE居中*/
5、控制器的职责
/**
*控制器的处理流程
*1、获取请求参数
*2、验证请求参数
*3、处理用户请求(访问业务组件)
*4、处理异常
*5、为视图准备数据(将数据放入模型[model])
*6、选择视图生成响应
*/
6、Action不是Servlet
7、Struts2的Action每次请求创建一个
8、输入校验
、Action继承ActionSupport,覆盖validate()方法
、在参数格式不满足条件是调用addFieldError();
、只有调用过addFieldError()方法,代表验证失败,如果验证失败不会再执行execute()方法
、校验失败时action的执行结果为input,需要在struts.xml中添加name为input的result
、在jsp页面中要显示验证失败的错误消息,需要使用struts2的标签<
s:
fielderror/>
9、struts2框架自身可能产生5种result
success
none
error
input
login
==================================================================================================
10、捕获请求参数
、将请求参数设置为Action的属性
<
tr>
<
tdwidth="
70"
align="
right"
>
用户名:
<
/td>
td>
inputtype="
text"
name="
username"
/>
/tr>
tdalign="
密码:
password"
publicclassReg1ActionextendsActionSupport{
privateStringusername;
privateStringpassword;
、直接将请求参数封装为对象
user.username"
user.password"
privateUseruser;
、使用模型驱动(ModelDriven)
publicclassReg1ActionextendsActionSupportimplementsModelDriven<
User>
{
publicUsergetModel(){
if(user==null){
user=newUser();
}
returnuser;
}
默认情况下,请求参数是绑定至Action对象的属性,如果Action实现了ModelDriven接口,请求参数将不再绑定至Action,而是
getModel()方法返回的对象上
11、Action如何向JSP传递数据
、使用Action的属性
privateStringmsg;
publicStringgetMsg(){
returnmsg;
}
@Override
publicStringexecute()throwsException{
msg="
用户注册成功!
"
;
return"
message"
、使用ActionContext
newUserServiceBean().save(user);
//执行保存
ActionContext.getContext().put("
msg"
"
@@用户注册成功"
);
12、访问Servletapi
HttpServletRequest:
getParameter():
获取请求参数
getParameterValues()
getHeader("
)
getContextPath()
getCookies()
setAttrbute(key,value):
共享数据
getRequestDispatcher().forward():
转发
HttpServletResponse
addHeader():
添加响应头
addCookie():
添加Cookie
sendRedirect():
重定向
HttpSession
get/setAttribute()
invalidate():
销毁session
ServletContext
getRealPath()
a>
、如果只是为了共享数据,可以使用Map
aa>
、直接获取
Map<
String,Object>
session=context.getSession();
//获取用于存储数据的map对象
Map<
application=context.getApplication();
Stringcompany=(String)session.get("
company"
session.put("
data"
asessionscopedata"
application.put("
aapplicationscopedata"
bb>
、依赖注入
publicclassServletApi2ActionextendsActionSupportimplementsRequestAware,SessionAware,ApplicationAware{
privateMap<
String,Object>
request;
session;
application;
@Override
publicvoidsetRequest(Map<
request){
System.out.println("
callsetRequest()"
this.request=request;
publicvoidsetApplication(Map<
application){
this.application=application;
publicvoidsetSession(Map<
session){
this.session=session;
b>
、如果要执行其它操作,则必须使用原生对象
HttpServletRequestrequest=ServletActionContext.getRequest();
HttpServletResponseresponse=ServletActionContext.getResponse();
HttpSessionsession=request.getSession();
ServletContextapplication=ServletActionContext.getServletContext();
publicclassServletApi4ActionextendsActionSupportimplements
ServletRequestAware,ServletResponseAware,ServletContextAware{
privateHttpServletRequestrequest;
privateHttpServletResponseresponse;
privateHttpSessionsession;
privateServletContextapplication;
@Override
publicvoidsetServletContext(ServletContextapplication){
this.application=application;
}
publicvoidsetServletResponse(HttpServletResponsearg0){
this.response=arg0;
publicvoidsetServletRequest(HttpServletRequestarg0){
this.request=arg0;
this.session=request.getSession();
13、一个Action处理多个请求
、一个Action类有多个与execute()相似签名的方法,每个方法处理一个请求
publicclassUserActionextendsActionSupport{
publicStringsave()throwsException{
return"
publicStringupdate()throwsException{
publicStringdelete()throwsException{
、从struts2.3开始不可使用
ahref="
userMgr!
save.action"
添加用户<
/a>
update.action"
修改用户<
delete.action"
删除用户<
、动态方法调用
!
--{1}代表第一个*号的值-->
actionname="
user_*"
class="
com.sxt.struts2.web.action.UserAction"
method="
{1}"
resultname="
/WEB-INF/jsp/message.jsp<
/result>
/action>
user_save.action"
user_update.action"
user_delete.action"
、更复杂的示例
User_add.action,Employee_delete.action,Dept_query.action
<
*_*"
xxx.action.{1}Action"
{2}"
input"
/WEB-INF/jsp/{1}/{2}.jsp<
14、struts.xml中的配置项
struts>
beanclass="
/>
--注册bean组件-->
--注册未知处理器-->
unknown-handler-stack>
unknown-handler-refname="
/unknown-handler-ref>
/unknown-handler-stack>
includefile="
user.xml"
--包含另一个配置文件-->
--修改struts2工作中的一些设定,可修改的设定来自于struts2-core-2.x.xx.jar中org.apache.struts2包中default.properties-->
constantname="
struts.i18n.encoding"
value="
utf-8"
/constant>
--post请求参数的字符集-->
--抽象包中不能定义action-->
--一个action请求路径由package的namespace+action的name属性组成-->
packagename="
default"
extends="
struts-default"
abstract="
false"
namespace="
/system/base"
--注册result解析器类-->
result-types>
result-typename="
sxt"
com.sxt.struts2.result.TestResult"
/result-type>
/result-types>
--注册拦截器-->
interceptors>
interceptorname="
test"
com.sxt.struts2.web.interceptor.TestInterceptor"
/interceptor>
--用于将多个拦截器组合成一个-->
interceptor-stackname="
testStack"
<
interceptor-refname="
defaultStack"
/interceptor-stack>
/interceptors>
--指定默认的拦截器-->
default-interceptor-refname="
--指定默认的Action类<
>
-->
--<
default-class-refclass="
/default-class-ref>
--指定默认的action-->
default-action-refname="
--全局result设定,可以被该包中的所有action使用-->
global-results>
/global-results>
--全局的异常处理声明-->
global-exception-mappings>
exception-mappingresult="
error"
exception="
java.lang.Exception"
/global-exception-mappings>
result>
result"
com.sxt.struts2.web.action.ResultAction"
--当action的执行结果为a时,由sxt所对应的解析器类生成响应-->
a"
type="
paramname="
location"
/param>
--声明Action需要使用哪些拦截器,一旦使用该元素,则默认拦截器不再有效-->
--
/interceptor-ref>
-->
/package>
/struts>
=======================================================================================================
15、result的设定(决定如何生成响应)
--转发至一个jsp-->
dispatcher"
--重定向至一个jsp-->
b"
redirect"
--转发至一个Action-->
c"
chain"
namespace"
/aaa<
actionName"
other<
--重定向至一个Action-->
d"
redirectAction"
--动态传参-->
other?
username=${name}<
--文本响应-->
e"
plainText"
--Content-Type:
text/plain;
charset=utf-8-->
charSet"
utf-8<
、转发操作,向下一个组件传值,直接将值存入ActionContext
ActionContext.getContext().put(key,value);
、重定位操作向下一