Struts入门

目标:

学会初步使用struts

1.struts的配置

2.动态方法调用

3.struts的传参

4.struts与tomcat的集成

相当于自定义mvc中的ation层


一、struts的配置

步骤:

①依赖->导入jar包->maven的pom.xml

②做配置->web.xml配置中央控制器->配置过滤器

③开发->写子控制器继承ActionSupport

1.在dom.xml加入struts依赖(依赖->导入jar包->maven的pom.xml)

<dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.5.13</version>
        </dependency>

 2.做配置->web.xml配置中央控制器->配置过滤器(和自定义mvc配置中央控制器一样)

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
<filter>
<filter-name>struts</filter-name>             
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter (这个用ctrl+shift+t搜索)</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>

所有配置文件都放在这个文件下面 

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <include file="struts-default.xml"></include>//引入了struts的默认配置
    <include file="struts-base.xml"></include>//开发人员对struts的基本配置
    <include file="struts-sy.xml"></include>//项目涉及到的模块,分文件管理
</struts>

struts-base.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <constant name="struts.i18n.encoding" value="UTF-8" />//编码
    <constant name="struts.devMode" value="true" />//开发模式
    <constant name="struts.configuration.xml.reload" value="true" />//xml的热加载
    <constant name="struts.i18n.reload" value="true" />//国际化
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />//动态方法调用

    <package name="base" extends="struts-default" abstract="true">
        <global-allowed-methods>regex:.*</global-allowed-methods>
    </package>
</struts>

 struts-sy.xml(按包分类)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="sy" extends="base" namespace="/sy">
    </package>
</struts>

以前开发 http://location:8080/mvc/xxx.action?methName=list---》xxx容易命名重复

现在的maven项目:http//location:8080/mvc/book/xxx.action--->按照包来命名

 maven项目的结构:

src
     mian
             java 写代码的地方
             resource 放配置的地方
             webapp 放页面的地方
        test
              java 写测试的代码的地方
              resource 放测试代码配置的地方

 3. 开发->写子控制器继承ActionSupport

案列:

子控制器

package com.xhy.web;

import com.opensymphony.xwork2.ActionSupport;

public class Demo1Action extends ActionSupport{

    public String add() throws Exception {
        System.out.println("新增方法");
        return "bookEdit";
    }
    public String del() throws Exception {
        System.out.println("删除方法");
        return "bookEdit";
    }
    public String edit() throws Exception {
        System.out.println("修改方法");
        return "bookEdit";
    }
    
}
 

配置struts-sy.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="sy" extends="base" namespace="/sy">
方法一:  

 <action name="/demo1_*" calss="com.xhy.web.Demo1Action" method="{1}"></action>
    <result name="bookEdit">/bookEdit.jsp</result>
  方法二(少数):

 <action name="/demo1_*_*" calss="com.xhy.web.Demo1Action" method="{1}"></action>
    <result name="{2}">/bookEdit.jsp</result>

</package>
</struts>

{1}代表第一个*代表调用的方法

第二个*代表跳哪个界面

 

三、struts的传参

自定义mvc:Mdeldriver接口传参

struts:①modeldriver接口传参

              ②set方法传参

              ③通过对象属性传参

1、Modeldriver接口传参

首先建个实体类进行演示,子控制器Demo1Action当然需要实现Modeldriver接口

写一个测试方法

public String list() throws Exception {
        System.out.println("edit方法……");
        System.out.println(user1);
        return "bookEdit";
    }

 调用(demo1.jsp):

<a href="${pageContext.request.contextPath }/sy/demo1_list.action?uid=001&&uname=zs">Modeldriver接口传参</a><br>

 

 

2、set方法传参

我们给Demo1Action添加个参数,给到set、get

private String sex;
public String getSex() {
        return sex;
    }

public void setSex(String sex) {
        this.sex = sex;
    }

public String list() throws Exception {
        System.out.println("list方法……");
        System.out.println(user1);
        return "bookEdit";
    }

调用:

<a href="${pageContext.request.contextPath }/sy/demo1_list.action?sex=nv">set方法传参</a><br>

 

3、通过对象属性传参

传个对象属性,给到set、get方法,输出调用

<a href="${pageContext.request.contextPath }/sy/demo1_list.action?user2.uid=002&&uname=xh">通过对象属性传参</a>

 

四、struts与tomcat的集成

解释:将后台的参数传到页面

第一种:

Demo1Action:

HttpServletRequest request = ServletActionContext.getRequest();
        request.setAttribute("xxx", 12);

bookEdit文件中调用:

${xxx }

 

 

第二种:

子控制器实现ServletRequestAware,ServletResponseAware的接口

并重写方法

private HttpServletResponse resp;
    private HttpServletRequest req;

@Override
    public void setServletResponse(HttpServletResponse response) {
        this.resp=response;
        
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.req=request;
        
    }


总结:

在创建maven项目一定要在网络完好的情况下运行

还有一定要等项目运行完再开始下一步

一定要极致的耐心

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值