当前位置:编程学习 > JS >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,