从servlet过渡到struts2,刚开始并不习惯,servlet代码敲多了的缘故?,反正servlet就那几个步骤:

1.获取参数 2.调用dao方法3.返回结果集4.页面跳转

struts作用,专业点解释,就是将业务逻辑和servlet API完全分离,采用了大量的拦截请求。如图所示:(这是官网的图片)

介绍下struts用法:

1)导入jar包
2)配置web.xml      
 <!-- 配置 struts的filter -->

  <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>*.action</url-pattern>
  </filter-mapping>
3)配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
<package name="user" namespace="/" extends="struts-default">
        <constant name="struts.i18n.encoding" value="utf-8"></constant>
        <constant name="struts.action.extension" value="action,,"></constant>
        <constant name="struts.serve.static.browserCache" value="false"></constant>
        <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
        <constant name="struts.devMode" value="true"></constant>
        <constant name="struts.configuration.xml.reload" value="true"></constant>
        <include file="struts-user.xml"></include>
    </package>    
</struts>

4)创建struts类,action类
public String execute(){
    reutrn “success”;
}

5)<action name="userRegister" class="com.qyxy.action.UserAction" method="register">
    <result>/index.jsp</result>
</action>
<action name="userLogin" class="com.qyxy.action.UserAction" method="login">
    <result>/index.jsp</result>
</action>
一个简单的pojo就完成了
二、创建action3种方式

第一种:自定义pojo类,编写无参数的返回值类型为String的execute方法。
public class UserLoginAction {
    private String username;
    private String password;
    public String execute(){
        
        System.out.println(username+"-------------------------------"+password);
        return "success";
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    
}
2)方式二: 实现Action接口
import com.opensymphony.xwork2.Action;
public class UserAction_impl implements Action{

    @Override
    public String execute() throws Exception {
        return Action.SUCCESS;    
    }
    
}

3)方式三:继承ActionSupport
import com.opensymphony.xwork2.ActionSupport;

public class UserAction_extends extends ActionSupport{
    @Override
    public String execute() throws Exception {
        return super.execute();
    }
}

三、action属性驱动、对象驱动、模型驱动

属性驱动:
jsp页面:
   <form action="user_login.action" method="post">
        用户名:<input type="text" name="username"><br/>
        密码:<input type="password" name="password"><br/>
        <input type="submit" value="登录">
    </form>

action类:
public class UserAction {
    private String username;
    private String password;    
    public String login(){
        System.out.println("---登录--"+username);
        return "success";
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
        
}
对象驱动:
jsp页面:
<form action="user1_register.action" method="post">
        用户名:<input type="text" name="user.username"><br/>
        密码:<input type="password" name="user.password"><br/>
        年龄:<input type="text" name="user.age"><br/>
        出生日期:<input type="text" name="user.birthday"><br/>
        <input type="submit" value="注册">
    </form>
action类:
public class UserAction1 {
    private User user ;
    
    public String register(){
        String username = user.getUsername();
        String password = user.getPassword();
        int age = user.getAge();
        Date birthday = user.getBirthday();
        System.out.println(username+"------"+password+"-------"+age+"-------"+birthday);
        return "success";
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
}
模型驱动
jsp页面:
<form action="user2_register.action" method="post">
        用户名:<input type="text" name="username"><br/>
        密码:<input type="password" name="password"><br/>
        年龄:<input type="text" name="age"><br/>
        出生日期:<input type="text" name="birthday"><br/>
        <input type="submit" value="注册">
    </form>

action类:

public class UserAction2 implements ModelDriven<User>{
    private User user = new User();
    public String register(){
        String username = user.getUsername();
        String password = user.getPassword();
        System.out.println(username+"-------"+password);
        return "success";
    }
    
    @Override
    public User getModel() {
        return user;
    }

    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
}






 posted on 2017-07-20 20:34  城管也会敲代码  阅读(70)  评论(0编辑  收藏  举报