实现目标
地址栏输入http://localhost:88/Struts2HelloWorld/helloworld.jsp
输入用户名,交由http://localhost:88/Struts2HelloWorld/hello.action 处理
返回到helloworld.jsp视图层,并显示刚才输入的值。
步骤
1、 新建工程
MyElipse下新建一个叫struts2hello的web工程;
2、 导入Jar包
将struts 2的jar包copy到WEB-INF/lib/目录下;
或者在工程的.classpath文件中加入:
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.struts2.MYECLIPSE_STRUTS21_CORE"/>
并刷新工程。
3、配置Filter
修改web.xml文件,配置Struts 2的核心Filter;
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*.action</url-pattern>
</filter-mapping>
4、配置struts.xml
在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>
<include file="struts-default.xml" />
<constant name="struts.i18n.encoding" value="utf-8" />
<package name="default" extends="struts-default">
<global-results>
<result name="login">login.jsp</result>
<result name="index">index.jsp</result>
</global-results>
<action name="UserAction" class="com.app.action.UserAction" />
</package>
</struts>
5、 实现控制器
package com.app.hello; import com.opensymphony.xwork2.Action;
//POJO(Plain Object Java Object 低侵入式)
public class UserWorld implements Action{
//获取页面上的控件,只需要要在这里注入对应的属性,提供setter和getter方法即可。(名称要完全一样)
private User user;//action类德每个属性对应于页面中的某个控件属性
private UserDAO userDAO = new UserDAO(); // action默认执行方法
public String execute() {
if(!userDAO.login(user.getUsername(), user.getPassword())) {
ActionContext ac = ActionContext.getContext();
ac.put("msg", "登陆信息有误"); //request.setAttribute("", );
} else {
return "index"; //转发到逻辑视图对应的页面
}
return "login";
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}
// http://localhost:8080/Struts2HelloWorld/hello!aliasAction.action
public String aliasAction() {
name = "";
return "success";
} }
6、 修改struts.xml文件
添加Action的映射和逻辑视图转向,在<struts></struts>中添加如下内容;
<package name="default" extends="struts-default">
<action name="hello" class="com.app.hello.HelloWorld">
<result name="success">/helloworld.jsp</result>
</action>
</package>
7、 添加JSP视图层
取名helloworld.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page isELIgnored="false" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Say Hello</title>
</head>
<body>
<h3>Say "Hello" to: </h3>
<s:property value="name"/> ${name}
<s:form action="hello">
Name: <s:textfield name="user.username" />
<s:submit />
</s:form>
</body>
</html>