从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;
}
}