新建一个Struts2工程,初步体验MVC

实现目标

地址栏输入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文件中加入:

 

[html][/html] view plaincopy

  1. <classpathentry kind=”con” path=”melibrary.com.genuitec.eclipse.struts2.MYECLIPSE_STRUTS21_CORE”/>

并刷新工程。 

3、配置Filter

修改web.xml文件,配置Struts 2的核心Filter;

 

[html][/html] view plaincopy

  1. <filter>
  2.     <filter-name>struts2</filter-name>
  3. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  4. </filter>
  5. <filter-mapping>
  6.     <filter-name>struts2</filter-name>
  7.     <url-pattern>/*.action</url-pattern>
  8. </filter-mapping>

 

4、配置struts.xml

 

在src 目录下增加struts.xml配置文件;

[html][/html] view plaincopy

  1. <?xml version=”1.0″ encoding=”UTF-8″ ?>
  2. <!DOCTYPE struts PUBLIC “-//Apache Software Foundation//DTD Struts Configuration 2.1//EN” “http://struts.apache.org/dtds/struts-2.1.dtd”>
  3. <struts>
  4.     <include file=”struts-default.xml” />
  5.     <constant name=”struts.i18n.encoding” value=”utf-8″ />
  6.     <package name=”default” extends=”struts-default”>
  7.         <global-results>
  8.             <result name=”login”>login.jsp</result>
  9.             <result name=”index”>index.jsp</result>
  10.         </global-results>
  11.         <action name=”UserAction” class=”com.app.action.UserAction” />
  12.     </package>
  13. </struts>

5、 实现控制器

[java][/java] view plaincopy

  1. package com.app.hello;
  2. import com.opensymphony.xwork2.Action;
  3. //POJO(Plain Object Java Object 低侵入式)
  4. public class UserWorld implements Action{
  5.     //获取页面上的控件,只需要要在这里注入对应的属性,提供setter和getter方法即可。(名称要完全一样)
  6.     private User user;//action类德每个属性对应于页面中的某个控件属性
  7.     private UserDAO userDAO = new UserDAO();
  8.     // action默认执行方法
  9.     public String execute() {
  10.         if(!userDAO.login(user.getUsername(), user.getPassword())) {
  11.             ActionContext ac = ActionContext.getContext();
  12.             ac.put(“msg”, “登陆信息有误”); //request.setAttribute(“”, );
  13.         } else {
  14.             return “index”; //转发到逻辑视图对应的页面
  15.         }
  16.         return “login”;
  17.     }
  18.     public User getUser() {
  19.         return user;
  20.     }
  21.     public void setUser(User user) {
  22.         this.user = user;
  23.     }
  24.     // http://localhost:8080/Struts2HelloWorld/hello!aliasAction.action
  25.     public String aliasAction() {
  26.         name = “”;
  27.         return “success”;
  28.     }
  29. }

6、 修改struts.xml文件

添加Action的映射和逻辑视图转向,在<struts></struts>中添加如下内容;

[html][/html] view plaincopy

  1. <package name=”default” extends=”struts-default”>
  2.     <action name=”hello” class=”com.app.hello.HelloWorld”>
  3.         <result name=”success”>/helloworld.jsp</result>
  4.     </action>
  5. </package>

7、 添加JSP视图层

取名helloworld.jsp

[html][/html] view plaincopy

  1. <%@ page contentType=”text/html; charset=utf-8″ %>
  2. <%@ taglib prefix=”s” uri=”/struts-tags” %>
  3. <%@ page isELIgnored=”false” %>
  4. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
  5. <html>
  6.     <head>
  7.     <meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
  8.     <title>Say Hello</title>
  9.     </head>
  10.     <body>
  11.         <h3>Say “Hello” to: </h3>
  12.         <s:property value=”name”/> ${name}
  13.         <s:form action=”hello”>
  14.             Name: <s:textfield name=”user.username” />
  15.             <s:submit />
  16.         </s:form>
  17.     </body>
  18. </html>

标签