• Struts2基本程序演示


    Struts2启动配置

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     5          version="3.1">
     6     <filter>
     7         <filter-name>struts2</filter-name>
     8         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
     9     </filter>
    10     <filter-mapping>
    11         <filter-name>struts2</filter-name>
    12         <url-pattern>/*</url-pattern>
    13     </filter-mapping>
    14 </web-app>

    Struts2主配置文件

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 
     6 <struts>
     7 
     8     <constant name="struts.enable.DynamicMethodInvocation" value="false" />
     9     <constant name="struts.devMode" value="true" />
    10     <!--默认就是UTF-8 所以不配置也行-->
    11     <!--<constant name="struts.i18n.encoding" value="UTF-8"/>-->
    12 
    13     <package name="default" namespace="/" extends="struts-default">
    14         <action name="index">
    15             <result>/WEB-INF/main.jsp</result>
    16         </action>
    17     </package>
    18 
    19     <!--struts2qs模块-->
    20     <include file="org/zln/struts2qs/cfg/struts2_struts2qs.xml"/>
    21 
    22 </struts>

    Struts2模块文件配置

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 
     6 <struts>
     7 
     8     <!--国际化资源-->
     9     <constant name="struts.custom.i18n.resources" value="org/zln/struts2qs/resource/messageResource"/>
    10 
    11     <!--struts2qs模块-->
    12     <package name="struts2qs" namespace="/struts2qs" extends="struts-default">
    13         <!--登录界面-->
    14         <action name="loginUI" class="org.zln.struts2qs.action.LoginAction" method="loginUI">
    15             <result name="success">/WEB-INF/struts2qs/loginForm.jsp</result>
    16         </action>
    17         <!--登录动作-->
    18         <action name="loginDo" class="org.zln.struts2qs.action.LoginAction" method="loginDo">
    19             <result name="success">/WEB-INF/struts2qs/welcome.jsp</result>
    20             <result name="input">/WEB-INF/struts2qs/loginForm.jsp</result>
    21         </action>
    22         <!--获取书籍-->
    23         <action name="getBooks" class="org.zln.struts2qs.action.BookAction" method="getBook">
    24             <result name="success">/WEB-INF/struts2qs/showBooks.jsp</result>
    25             <result name="login">/WEB-INF/struts2qs/loginForm.jsp</result>
    26         </action>
    27     </package>
    28 
    29 </struts>

    Action

     1 package org.zln.struts2qs.action;
     2 
     3 import com.opensymphony.xwork2.ActionContext;
     4 import com.opensymphony.xwork2.ActionSupport;
     5 import org.apache.commons.lang3.StringUtils;
     6 
     7 /**
     8  * Created by sherry on 15-7-8.
     9  */
    10 public class LoginAction extends ActionSupport {
    11     private String username;
    12     private String password;
    13 
    14     //登录界面
    15     public String loginUI(){
    16         return SUCCESS;
    17     }
    18     //登录动作
    19     public String loginDo(){
    20         System.out.println("获取参数:" + username + ":" + password);
    21         if ("zln".equals(username)
    22                 &&"123".equals(password)){
    23             ActionContext.getContext().getSession().put("user",username);
    24             return SUCCESS;
    25         }else {
    26             return INPUT;
    27         }
    28     }
    29 
    30     //输入校验
    31 
    32     //所有方法的输入校验
    33     @Override
    34     public void validate() {
    35         super.validate();
    36     }
    37 
    38     //指定方法的输入校验
    39     public void validateLoginDo(){
    40         if (StringUtils.isEmpty(username)){
    41             //对错误信息进行了国际化 也可以直接用文字
    42             addFieldError("username",getText("username.required"));
    43         }
    44     }
    45 
    46     public String getUsername() {
    47         return username;
    48     }
    49 
    50     public void setUsername(String username) {
    51         this.username = username;
    52     }
    53 
    54     public String getPassword() {
    55         return password;
    56     }
    57 
    58     public void setPassword(String password) {
    59         this.password = password;
    60     }
    61 }
    62 
    63 
    64 /*
    65 Action访问Servlet API
    66 间接访问
    67      static ActionContext     getContext()
    68 直接访问
    69 * */
     1 package org.zln.struts2qs.action;
     2 
     3 import com.opensymphony.xwork2.ActionContext;
     4 import com.opensymphony.xwork2.ActionSupport;
     5 import org.zln.struts2qs.service.BookService;
     6 
     7 /**
     8  * Created by sherry on 15-7-8.
     9  */
    10 public class BookAction extends ActionSupport {
    11     private String[] books;
    12 
    13     public String getBook(){
    14         String user = (String) ActionContext.getContext().getSession().get("user");
    15         if ("zln".equals(user)){
    16             //实际开发中会从容器中获取依赖对象
    17             BookService bookService = new BookService();
    18             books = bookService.getLeeBooks();
    19             return SUCCESS;
    20         }else {
    21             return LOGIN;
    22         }
    23     }
    24 
    25     public String[] getBooks() {
    26         return books;
    27     }
    28 
    29     public void setBooks(String[] books) {
    30         this.books = books;
    31     }
    32 }

    jsp页面

     1 <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
     2 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
     3 <%@ taglib prefix="s" uri="/struts-tags" %>
     4 <%
     5     String home = request.getContextPath();
     6 %>
     7 <html>
     8 <head>
     9     <%--s:text标签输出国际化信息--%>
    10     <title><s:text name="loginPage"/></title>
    11 </head>
    12 <body>
    13     <form action="<%=home%>/struts2qs/loginDo.action" method="post">
    14         <table>
    15             <caption>用户登录</caption>
    16             <tr>
    17                 <td>用户名:</td>
    18                 <td><input type="text" name="username" /></td>
    19             </tr>
    20             <tr>
    21                 <td>密 码:</td>
    22                 <td><input type="password" name="password" /> </td>
    23             </tr>
    24             <tr>
    25                 <td colspan="2">
    26                     <input type="submit" value="提交"/>
    27                     <input type="reset" value="重置" />
    28                 </td>
    29             </tr>
    30         </table>
    31     </form>
    32     <hr/>
    33     <%--使用Struts2标签 默认提供表单输出提示--%>
    34     <s:form namespace="/struts2qs" action="loginDo" method="POST">
    35         <%--使用标签的 key 输出国际化信息--%>
    36         <s:textfield name="username" key="username"/>
    37         <s:password name="password" label="密  码"/>
    38         <s:submit value="提交"></s:submit>
    39     </s:form>
    40 </body>
    41 </html>
     1 <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
     2 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
     3 <%@ taglib prefix="s" uri="/struts-tags" %>
     4 <%
     5     String home = request.getContextPath();
     6 %>
     7 <html>
     8 <head>
     9     <%--使用表达式输出国际化信息--%>
    10     <title><s:property value="%{getText('succPage')}"/> </title>
    11 </head>
    12 <body>
    13     欢迎,${sessionScope.user},您已经登录!<br/>
    14     <a href="<%=home%>/struts2qs/getBooks.action">获取书籍列表</a>
    15 </body>
    16 </html>
     1 <%@ page import="com.opensymphony.xwork2.util.ValueStack" %>
     2 <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
     3 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
     4 <%@ taglib prefix="s" uri="/struts-tags" %>
     5 <html>
     6 <head>
     7     <title>书籍</title>
     8 </head>
     9 <body>
    10     <table border="1" width="360">
    11         <%
    12             /*Struts2的所有属性参数被封装在此*/
    13             ValueStack valueStack = (ValueStack) request.getAttribute("struts.valueStack");
    14             String[] books = (String[]) valueStack.findValue("books");
    15             for (String book:books){
    16                 %>
    17                 <tr>
    18                     <td>书名:</td>
    19                     <td><%=book%></td>
    20                 </tr>
    21         <%
    22             }
    23         %>
    24     </table>
    25     <hr/>
    26     <table border="1" width="360">
    27         <caption>书籍</caption>
    28         <s:iterator value="books" status="index">
    29             <s:if test="#index.odd == true">
    30                 <tr style="background-color: aqua">
    31             </s:if>
    32             <s:else>
    33                 <tr>
    34             </s:else>
    35                     <td>书名:</td>
    36                     <td><s:property/></td>
    37                 </tr>
    38         </s:iterator>
    39     </table>
    40     <hr/>
    41     <a href="${pageContext.request.contextPath}/index.action">返回首页</a>
    42 </body>
    43 </html>

    Action访问Servlet API的方法

  • 相关阅读:
    Enum.GetUnderlyingType(obj.GetType())
    Out,ref,params修饰符,可选参数,命名参数
    Linq
    var
    checked,unchecked
    StringBuilder.sb.AppendLine();
    js改变css样式的三种方法
    flex的用途
    clip-path
    json 对象 数组
  • 原文地址:https://www.cnblogs.com/sherrykid/p/4631050.html
Copyright © 2020-2023  润新知