欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

struts2视频教程听课笔记(二)

Java Web water 1100℃ 0评论

Action怎样接收参数

三种接收参数的方式

  1. Action中的属性名称和前端表单的名称相同(自动赋值)

Struts2是调用的方法赋值。

  1. DomainModelrParamInput (域模型),action接收到参数就是赋值到某个对象属性,存到数据库中

属性中存在一个Model(对象),加上set,get方法,也不需要new,struts2负责

输入一般是不是和域模型完全匹配,不匹配的时候(1.直接获取每个属性,再操作对象赋值;2.使用vo视图对象、do数据对象、dto数据传输对象;

  1. ModelDriverParamInput, Action implements ModelDriver<User>, User类型属性必须得new)

public User getModel() {

 

Struts2主要是MVC中的C

 

中文乱码问题

如果有中文,尽量用post

i18n->internationalization

搭配环境-》然后写小程序,一个小程序测试一个知识点。

配置这个struts.i18n.encoding=UTF-8(好像有bug)

 

数据校验

读源码(顺着一条线往下读),不是读懂所有的jsp再读java

努力很重要但是方法也很重要。UserAction没有和request和response绑定在一块。返回错误信息 this.addFieldError(“name”, “name is error”)

<s:fielderror fieldname=”name” thme=”simple”>

<s:property value=”errors.anme[0]” /> ->取Struts ValueStack

<s:debug></s:debug>可以看到struts ValueStack和stack context

Errors包括actionErrors(Action本身有问题),fieldError

比如errors为name=[name is err]

可以对同一个名字添加多个属性么?可以。

 

Struts2中通过某种机制访问到一些webElements(session、request、application),response不需要

第一种方式获取map类型的request、session、application;真实对象的HttpServletRequeset、HttpServletSession、HttpServletApplication

 

request=(Map)ActionContext.getContext().get(“request”);

session=ActionContext.getContext().getSession();

application=ActionContext.getContext().getApplication():

getContext()不是单例,是threadLocal

 

Context是指周围的环境(上下文,运行环境)

ServletContex是指Servlet的运行环境

ActionContext是指Action的运行环境

 

前台可以->

<s:property value=”#request.r1”/> ! <%=request.getAttribute(“r1”)%>

<s:property value=”#arrt.a1”/>

attr会搜request、session、application中搜索(尽量不用)

 

第二种方式

pubic class UserAction extends ActionSupport mplements RequestAware, SessionAware, ApplicationAware{

}

需要提供三个方法

@Override

Public void setRequest(Map<String, Object> request){

this.request=request

}

这块利用了

IOC(inverse of control)或者称为DI (dependency injection)依赖注入

JUDE(画图工具要会用)

 

 

第三种方式HTTP对象类型

request = ServletActionContext.getRequest();

session = request.getSession();

application= session.getServletContext();

 

第四种方式

implements ServletRequestAware(){

@Override

Public void setServletRequest(HttpServletRequest request) {

this.request=request;

this.session=request.getSession();

this.application= session.getServletContext();

}

}

 

Struts.xml中的<include file=”login.xml”>就是相当于把文件直接考过来

要做的穿一手鞋(自己原创,参考官方api文档)

好处就是模块化,一个有经验的项目经理会分模块,自己写自己的配置

 

在<package>标签中定义<default-action-ref name=””></default-action-ref>

请求的时候不写action和找不到的action都会跳转到默认的action

 

Action总结

DMI动态方法调用!(掉方法)

通配符*_*通配符配置{1}{2}

顺利上完本科,创造力就没了

必须等别人写完程序然后改这样没办法进步

转载请注明:学时网 » struts2视频教程听课笔记(二)

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!