其实struts2的零配置很好理解 先要配置web.xml 如下 (其中一段) <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 <init-param>
 <param-name>actionPackages</param-name>
 <param-value>com.shop.struts2.action</param-value>
 </init-param>
 </filter>
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>*.action</url-pattern>  拦截.action 方法
 </filter-mapping>具体只写一个Action   就拿登录Action来说吧package com.shop.struts2.action;import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import com.shop.vo.User;
@Namespace(value = "/struts")     //这里声明命名空间  
public class LoginAction extends BaseAction {
private User user;
public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}

@Action(value = "login_Login", results = {     // 这里相当于struts.xml <action name = xxx>
  @Result(name = "login",location="/struts/login.jsp"),  //这里是action 里面result 的name  和要跳转的页面,当然还可以指定其类型 type = "xxxx"
  @Result(name = "center",location="/struts/center.jsp")
})
public String login() {
if(userService.login(user.getAccount(), user.getPassword()))
{
user = userService.find("account", user.getAccount());
System.out.println(user.getUserName());
ServletActionContext.getRequest().getSession(true).setAttribute("user", user);
ServletActionContext.getRequest().getSession(true).setAttribute("status", "success");

return "center";
}
return "login";
}

@Action(value = "logout_Login", results = {
  @Result(name = "login",location="/struts/login.jsp"),
})
public String logout() {
ServletActionContext.getRequest().getSession(true).removeAttribute("user");
ServletActionContext.getRequest().getSession(true).removeAttribute("shopCart");
ServletActionContext.getRequest().getSession(true).setAttribute("status", "logout");
return "login";
}}不知道这样写好不好,如果有比这里更好的谢谢一起交流 我QQ4218380 或者加入 技术交流群 28566860 (Android技术交流)

解决方案 »

  1.   

    谢谢你让我见识了新的写法,跟Hibernate中的Annotation替代*.hbm.xml大同小异,只是这样写岂不是要在每个Action中都要加注解么?在做好编码约定的前提下,貌似没有在配置文件中写来的简约,比如*_*。
      

  2.   

    是跟hibernate的   xx.hbm.xml注解一样的,本来可以直接在Action 类上面写 Actions{{Action{xxx}}}  每个方法都要这样写,唉。还没找到好方法,这样写的话好多代码冗余一样的,用注解是要比struts.xml 配置的功能少些~~