• 1.0、Struts2的简单搭建方法


    一、Struts2:是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet;用于jsp页面与Java代码之间的交互。

      1、核心:Filter拦截器,对所有的请求进行拦截。

      2、工作流程:http://localhost:8080/项目名/请求 --> 被web.xml中的Struts拦截器拦截到strus.xml文件-->找到对应的action里面对应的name,也就找到了对应的类-->通过action里面的method参数找到对应的执行方法,并返回一个字符串-->找到action标签中的result标签中的name与返回值相匹配-->跳转到向应的jsp页面。

      3、配置

          1、将strus2所需的jar包添加到 项目名WEB-INFlib  中

          2、复制struts.xml文件到 src目录下

          3、写action代码。注意:

            a)、Struts的action方法都是待返回值的方法

            b)、 在action类中需要实现modelDriven 来自动的将页面参数注入到对象中去。因此jsp页面的标签中的name属性必须跟Java类的属性字段完全对应。

          4、在web.xml文件中编写Strus2的Filter核心拦截器

          5、在strust.xml文件中去配置package标签中的属性。

    二、Struts2的简单搭建:

      1、新建一个web项目

      2、新建一个Person类     

     1 package com.st.bean;
     2 
     3 public class Person {
     4     private int id;
     5     private String name;
     6     private int age;
     7     public int getId() {
     8         return id;
     9     }
    10     public void setId(int id) {
    11         this.id = id;
    12     }
    13     public String getName() {
    14         return name;
    15     }
    16     public void setName(String name) {
    17         this.name = name;
    18     }
    19     public int getAge() {
    20         return age;
    21     }
    22     public void setAge(int age) {
    23         this.age = age;
    24     }
    25 }

      3、将Struts2所需的jar包考到lib文件下

      4、在web.xml文件中编写struts2的核心拦截器,这里面的类容最好直接拷贝不要手敲,容易出错。

     1   <!-- **********************************  -->
     2   <filter>
     3       <filter-name>struts2</filter-name>
     4       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
     5   </filter>
     6   <filter-mapping>
     7       <filter-name>struts2</filter-name>
     8       <url-pattern>/*</url-pattern>
     9   </filter-mapping>
    10   <!-- **********************************  -->

      5、在index.jsp编写HTML代码,注意标签的name值和Person类的字段相对应

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>Struts2核心拦截器示例</title>
      </head>
    
      <body>
         <form method="post" action="<%=request.getContextPath() %>/person/personAdd">
             <table>
                <tr>
                    <td>ID:</td>
                    <td><input type="text" name="id" value="${id}"/></td>
                </tr>
                <tr>
                    <td>姓名:</td>
                    <td><input type="text" name="name" value="${name}"/></td>
                </tr>
                <tr>
                    <td>年龄:</td>
                    <td><input type="text" name="age" value="${age}"/></td>
                </tr>
                <tr>
                    <td><input type="submit" /></td>
                    <td><input type="reset" /></td>
                </tr>
             </table>
          </form>
      </body>
    </html>

      6、拷贝一个struts.xml文件到src文件下,修改package标签中的属性值,如果action标签中不指定method属性,那么会默认的执行execute()方法。

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <!-- <struts>
     7     <package name="" namespace="url的中间路径" extends="struts-default">    
     8          <action name="访问的路径" class="对应的action类" method="类里面对应的方法" > 
     9                <result name="action方法里面返回的字符串" >对应的jsp页面的路径</result> 
    10          </action>
    11     </package>
    12 </struts> -->
    13 <struts>
    14     <package name="person" namespace="/person" extends="struts-default" >
    15          <action name="personAdd" class="com.st.action.PersonAction" method="personAdd">
    16               <result name="success">/index.jsp</result>
    17          </action>
    18     </package>
    19 </struts>

      7、编写action代码:继承PersonAction得到execute()方法,实现ModelDriven接口重写getModel方法

     1 package com.st.action;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 import com.opensymphony.xwork2.ModelDriven;
     5 import com.st.bean.Person;
     6 
     7 
     8 public class PersonAction extends ActionSupport implements ModelDriven<Person>{ 
     9 
    10     private Person person;
    11     //如果不指定action中的method,就会默认的走这个方法
    12     public String execute() throws Exception{
    13          return SUCCESS; 
    14     }
    15     //主题在Struts2中的action中的方法都必须返回一个String类型的参数
    16     public String personAdd(){
    17         System.out.println(person.getId()+"---"+person.getName()+"----"+person.getAge());
    18         return SUCCESS;
    19     }
    20     //让jsp页面的name对应的value自动注入到对象中的属性中去。
    21     public Person getModel() {
    22         this.person = new Person();
    23         return person;
    24     }
    25 }
  • 相关阅读:
    hdoj 2803 The MAX【简单规律题】
    hdoj 2579 Dating with girls(2)【三重数组标记去重】
    hdoj 1495 非常可乐【bfs隐式图】
    poj 1149 PIGS【最大流经典建图】
    poj 3281 Dining【拆点网络流】
    hdoj 3572 Task Schedule【建立超级源点超级汇点】
    hdoj 1532 Drainage Ditches【最大流模板题】
    poj 1459 Power Network【建立超级源点,超级汇点】
    hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
    hdoj 1012 u Calculate e
  • 原文地址:https://www.cnblogs.com/czj-zhm/p/5856851.html
Copyright © 2020-2023  润新知