摘自尚硅谷的视频教程struts的代码实现。
原本MVC中的C是由servelet实现的。而Struts2使用的是Filter来冲当控制器
模型 POJO(普通Java类,如DAO(数据访问对象))
视图 jsp
控制器 filter
请求被发送到filterDispacher
首先,利用myeclipse自带的功能配置好Struts框架
首先我们来看看放在src目录下的struts.xml,里面什么都没有
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
</struts>
将其修改为如下代码,其中,注意namespace是你的工程名字
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- Struts 2 的Action必须放在包空间下 -->
<package name="strutsqs" extends="struts-default" namespace="/HelloWorld2">
<!-- 定义action的名字以及action的实现类 -->
<action name="LoginAciton" class="com.gjy.struts2.loginAction.LoginAction">
<!-- 定义action的处理结果result,result有两个属性,其中name指定返回名称,tyle指定返回的类型 -->
<!-- 处理Login错误时返回/error.jsp -->
<result name="error">/error.jsp</result>
<!-- 处理Lognin正确时/suc.jsp -->
<result name="suc">/suc.jsp</result>
</action>
</package>
</struts>
然后新建若干最普通的java代码
package com.gjy.struts2.entity;
public class Book {
private static Object book[]=new Object[4];
public Book(){
book[0] = "《java编程思想》";
book[1] = "《Struts2权威指南》";
book[2] = "《精通Oracle》";
book[3] = "《我的Flex我精通》";
}
public Object[] getBook(){
return book;
}
}
package com.gjy.struts2.interfaceAction;
public interface Action {
public static String SUCCESS="suc";
public static String ERROR="error";
public String execute()throws Exception;
}
package com.gjy.struts2.loginAction;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.gjy.struts2.entity.Book;
import com.gjy.struts2.interfaceAction.Action;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction implements Action {
private String userName;
private String passWord;
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;
}
//处理用护请求的execute方法
public String execute() throws Exception
{
if (getUserName().equals("gongjiayun")
&& getPassWord().equals("hehe") )
{
//通过ActionContext访问Web对象的Session对象,此处的ActionContext返回的是一个Map
//虽然struts2的action中没有HttpSession对象,但我们也可以通过通过ActionContext访问Web对象的Session对象
Map sessionMap = ActionContext.getContext().getSession();
sessionMap.put("user" , getUserName());
Book book = new Book();
Object books[]= book.getBook();
List<Object[]> bookList = new ArrayList<Object[]>();
bookList.add(books);
sessionMap.put("book", bookList);
return SUCCESS;
}
else
{
return ERROR;
}
}
}
在程序部署到服务器前一定要对代码进行编译。