Struts2_part2
一、在Struts.xml中,配置namespace。如果namespace 没写,为空,“/", "*" 表示任意匹配,
也就是
都能匹配同一个action。
二、在copy 项目后,要修改 web -> Web context-root 为新的项目名称
三、引入项目
import ->workplaces -> Copy into workspace (勾选copy into workpaces)
如果包的路径有错,重新引入即可。
四、路径问题。
因为struts2 是根据Action的路径而不是jsp的路径来确定,所以统一使用绝对路径。
使用MyEclipse提供的路径:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
1. 在MyEclipse中,会自动生成<base href="<%=basePath%>">,
表示在链接的前面,都会自动加上绝对路径。
2. 将链接修改为 <a href="<%=basePath%>index.jsp">返回首页</a>
使用 <%=basePath%>.
五、方法的调用,Action 执行的时候不一定调用 execute 方法
1、在Struts.xml中,配置method参数,method="method"
2、DMI 动态方法调用,配一个Action 就可以。
在url中 ../user.action!method 会自动调用类中的method方法
3、通配符,能将配置量降至最低,如:
<action name="*_*" class="evin.core.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
"{1}" 代表第一个“*”
通配符*的匹配先后顺序,按精确程度,先后顺序匹配。
六、Action 接收参数
1、属性接受参数
属性的名称要和前台传送表单的name相互匹配,必须写出setting()和gettings() 方法
2、DomainMode 域模型,更有封装性
首先要有一个类,如User,定义了各种属性,
然后在另外一个类,如UserAction,继承了action,然后实例化出来,要写setUser()和getUser()方法。
然后在前台的name设置中,要写为user.name,user.password
这样后台才能顺利的接受到参数。
域模型的好处就是模型化,更加体现了面向对象的思想。
3、ModelDriven 接收参数,实现接口, implements ModelDriven<>()
实例代码:
public class UserAction extends ActionSupport implements ModelDriven<User> { private User user; public String execute() throws Exception { System.out.println("username "+user.getUsername()); System.out.println("password "+user.getPassword()); return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public User getModel() { // TODO Auto-generated method stub return user; } }
七、中文参数问题。
Web页面之间的中文参数传递,全部用post
补充:Web开发 , Jsp ,