Struts基础及步骤(1)!

  1. 导入Struts的包到MyEclipse的项目下的WebRoot--->WEB-INF--->lib里,其中的包,包括:
    commons-fileupload-1.2.1.jar
    freemarker-2.3.15.jar
    commons-logging-1.0.4.jar
    ognl-2.7.3.jar
    struts2-core-2.1.8.1.jar
    xwork-core-2.1.6.jar
  2. 在同为WEB-INF下的web.xml里设置过滤器:请将我在行内的注释先删除掉!!
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     7   <welcome-file-list>
     8     <welcome-file>index.jsp</welcome-file>
     9   </welcome-file-list>
    10   在这里写过滤器
    11   <filter>
    12 <filter-name>struts2</filter-name>这里是过滤器的名字

    13 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 14 </filter>上面那一行是过滤器的所在的包里的路径--->Struts准备并执行过滤 15 16 <filter-mapping>这里是过滤的设置17 <filter-name>struts2</filter-name>这是过滤的名字18 <url-pattern>*.action</url-pattern>请求是以.action发送的时候执行过滤19 </filter-mapping> 20 </web-app>
  3. 在src文件下创建一个.xml文件并以struts命名
    1. 找到Refereneced Libraries--->struts2-core-2.1.8.1.jar--->struts-default.xml
    2. 将struts-default.xml中的一些代码复制;如以下的代码1-7行,并将7行的<strust>标签补齐
    3. 回到src下的struts.xml中书写 
      1 <?xml version="1.0" encoding="UTF-8" ?>
           2 
           3 <!DOCTYPE struts PUBLIC
           4     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
           5     "http://struts.apache.org/dtds/struts-2.1.7.dtd">
           6 
           7 <struts>
           8     <constant name="struts.i18n.encoding" value="UTF-8"></constant>这里书写的是struts的编码方式
           9     <constant name="struts.devMode" value="true"></constant>这里书写的struts开发模式true开启,产品模式是false
          10     <package name="pagekage" extends="struts-default" namespace="/">
          11       上面一行是进行设置package   name是package的标识用于区分  
                                              extends是继承与struts-default
                                             namespace是命名空间 使用的一种代码组织的形式 通过名称空间来分类
      
          12     <action name="login" class="com.action.LoginAction" >
          13         在上一行name表示页面里的from或a标签访问的名字
                                   class用于当login被访问时寻找的类
                                   在这里有一个隐藏的属性method,当没有被写出的时候默认执行的方法是execute方法
          14          <exception-mapping result="Exe" exception="java.lang.Exception"></exception-mapping>
                     上一行是一个异常捕获,当action中出现异常时该标签就会异常的字符
                                        result返回Exe     exception异常处理机制
          15          <result>success.jsp</result> 
                      当result没有 name的属性时,其name默认为success,而后根据写的网页进行跳转
                             result中间夹着的就是网页
          16          <result name="error">error.jsp</result>
          17          <result name="Exe">Exe.jsp</result> 
          18    </action> 
          19 
          20 </package> 
          21 </struts>
  4. 创建一个(名字+action.java)文件在src中  例如:com.action包下的--->LoginAction.java
    1.     LoginAction.java使其继承与ActionSupport或接口与Action;推荐继承
      1. 继承ActionSupport:内有封装的方法、常量、等可以运用的东西!!
      2. 接口Action:必须实现execute方法,自己编写
    2.  在struts中可以直接的进行对象的赋予,不用自己将网页提供的数据取出并赋予对象
      1.   第一种:直接写对象的get与set的方法并私有对象属性,在请求通过时struts自动创建成员并set----前提是在页面内必须要有对象的名字.属性----user.name      -如下
      2.  1 package com.action;
         2 
         3 import com.bean.User;
         4 import com.opensymphony.xwork2.Action;
         5 
         6 public class LoginAction implements Action {
         7 
         8     private User user;
         9     
        10     
        11     
        12     public User getUser() {
        13         return user;
        14     }
        15     
        16     public void setUser(User user) {
        17         this.user = user;
        18     }
        19 
        20     public String execute() throws Exception {
        21         // TODO Auto-generated method stub
        22         if(user.getName()!=null&user.getName().equals("wang")){
        23             return "yes";
        24         }
        25         return "no";
        26     }
        27 
        28 }
        1. 第二种:与ModelDriven<User>接口实现其方法,并直接将对象创建出来--在这个里就不用象上一个在页面上user.name,可以直接的name--如下
           1 package com.action;
           2 
           3 
           4 import com.bean.User;
           5 import com.opensymphony.xwork2.ActionSupport;
           6 import com.opensymphony.xwork2.ModelDriven;
           7 
           8 
           9 
          10 public class sss extends ActionSupport implements ModelDriven<User>{
          11     
          12 
          13     private User user=new User();
          14     
          15     public String add(){
          16         if(user.getName()!=null&user.getName().equals("wang")){
          17             
          18             this.addActionMessage("姓名错误!!!请重新输入!");
          19             上一行是继承ActionSupport类里的,可以在页面中直接取出
          20             return SUCCESS;
          21         }
          22         
          23         return ERROR;
          24     }
          25 
          26     public User getModel() {
          27         // TODO Auto-generated method stub
          28         return user;
          29     }
          30     
          31 }

               各位纯手打很辛苦的!!!!!!!请让我也上一个首页!!谢谢!

原文地址:https://www.cnblogs.com/a710445786/p/6370544.html