zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    超轻量级三级展开列表
    5 Reasons Your Javascript Stinks
    xhEditor 轻量级文本编辑器简单配置
    简单SEO攻略
    ashx文件
    xml中xPath的使用
    关于MSDN,文章索引
    关于Jquery中 “$(document).ready(function(){ })”函数的使用
    在Jquery使用过程中用到了css属性:opacity(不透明度),cursor (光标的类型、形状)
    初识Silverlight
  • 原文地址:https://www.cnblogs.com/czj-zhm/p/5856851.html
Copyright © 2011-2022 走看看