struts2入门2--参数的传递

本文介绍了在Struts2框架中实现参数传递的三种方法:使用Action属性接收、使用DomainModel接收以及使用ModelDriven接收参数,并重点讲解了第三种方法的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

避免混乱,下面新建了第二个工程来实现 参数的传递
用三种方法来实现,第三种方法比较好
项目名 struts2Test2

重要知识点,在第三种方法里如何将参数读入集合里面,见login.jsp注释

Struts2.xml (这里是用了“指定多个配置文件” myxml.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <!-- 

     -->
     <include file="myxml.xml"></include> 

</struts> 

Myxml.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

    <package name="default" namespace="/" extends="struts-default">

        <action name="helloWorld" class="com.bright.action.MyAction">
            <!-- result中不指定name type 属性,默认是SUCCESS   -->
            <result>/index.jsp</result>

        </action>


        <action name="add" class="com.bright.action.MyAction">
            <result>/add.jsp</result>
        </action>

         <!-- 
            接收参数
            1,使用Action的属性接受参数
            2,使用DomainModel接收参数
            3,使用ModelDriven接收参数


           -->

        <!--1,使用Action的属性接受参数  -->
        <action name="doaction" method="login" class="com.bright.action.Doaction">
            <!-- result中不指定name type 属性,默认是SUCCESS   -->
            <result>/index.jsp</result>

        </action>

        <!--2,使用DomainModel接收参数  -->

        <action name="doaction2" method="login2" class="com.bright.action.Doaction2">
            <!-- result中不指定name type 属性,默认是SUCCESS   -->
            <result>/index.jsp</result>

        </action>

        <!--3,使用ModelDriven接收参数 , 比较推荐大家使用这种方法-->

        <action name="doaction3" method="login3" class="com.bright.action.Doaction3">
            <!-- result中不指定name type 属性,默认是SUCCESS   -->
            <result>/index.jsp</result>

        </action>

        </package>

</struts>

Login.jsp

<%@ 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>
    <base href="<%=basePath%>">

    <title>My JSP 'login.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <form action="doaction3.action" method="post">
 <!--  由于使用了第三种方法,而他们的name是一样的,所以有冲突,所以注释起来
  第一种方法
  用户名:  <input type="text" name="uname">
    密码:<input type="password" name="pw">
   <br><br>

    第二种方法
  用户名:  <input type="text" name="user.uname">
    密码:<input type="password" name="user.pw">
   <br><br>
    -->  
    第三种方法
  用户名:  <input type="text" name="name">
    密码:<input type="password" name="pw">
    选项1:  <input type="text" name="booklist[0]"> <!-- 加入list集合是一个对象集合例如是 User,那么这里 -->
      选项2:  <input type="text" name="booklist[1]"> <!-- 应该是booklist[0].uname   ....以此类推 -->
        选项3:  <input type="text" name="booklist[2]"> <!-- 那么获取值就是user2.getBooklist().get(0).getUname() -->


    <br><br>

    <input type="submit" value="提交">

    </form>
</html>

第一种方法
1,使用Action的属性接受参数

Doaction.java

package com.bright.action;

import com.opensymphony.xwork2.ActionSupport;

public class Doaction extends ActionSupport {
    private String uname;
    private String pw;

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getPw() {
        return pw;
    }

    public void setPw(String pw) {
        this.pw = pw;
    }

    public String login(){
        System.out.println(uname);

        System.out.println(pw);

        return SUCCESS;
    }

public String add(){

        return "add";
    }


}

2,使用DomainModel接收参数

User.java

package com.bright.action;

public class User {
    private String uname;
    private String pw;
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getPw() {
        return pw;
    }
    public void setPw(String pw) {
        this.pw = pw;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
    public User(String uname, String pw) {
        super();
        this.uname = uname;
        this.pw = pw;
    }


}

Doaction2.java

package com.bright.action;

import com.opensymphony.xwork2.ActionSupport;

public class Doaction2 extends ActionSupport {
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String login2(){
        System.out.println(user.getUname());
        System.out.println(user.getPw());
        return SUCCESS;
    }

}

3,第三中方法,使用modelDriven,开发中最常用的咯

User2.java

package com.bright.action;

import java.util.List;

public class User2 {
    private String name;
    private String pw;

    private List<String > booklist;

    public List<String> getBooklist() {
        return booklist;
    }
    public void setBooklist(List<String> booklist) {
        this.booklist = booklist;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPw() {
        return pw;
    }
    public void setPw(String pw) {
        this.pw = pw;
    }
    public User2() {
        super();
        // TODO Auto-generated constructor stub
    }
    public User2(String name, String pw) {
        super();
        this.name = name;
        this.pw = pw;
    }


}

Doaction3.java

package com.bright.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class Doaction3 extends ActionSupport implements ModelDriven<User2> {
    User2 user2=new User2();

    public String login3(){

        System.out.println(user2.getName());
        System.out.println(user2.getPw());
        System.out.println(user2.getBooklist().get(0));
        System.out.println(user2.getBooklist().get(1));
        System.out.println(user2.getBooklist().get(2));

        return SUCCESS;
    }

    public User2 getModel() {

        return user2;
    }

}
一、综合实战—使用极轴追踪方式绘制信号灯 实战目标:利用对象捕捉追踪和极轴追踪功能创建信号灯图形 技术要点:结合两种追踪方式实现精确绘图,适用于工程制图中需要精确定位的场景 1. 切换至AutoCAD 操作步骤: 启动AutoCAD 2016软件 打开随书光盘中的素材文件 确认工作空间为"草图与注释"模式 2. 绘图设置 1)草图设置对话框 打开方式:通过"工具→绘图设置"菜单命令 功能定位:该对话框包含捕捉、追踪等核心绘图辅助功能设置 2)对象捕捉设置 关键配置: 启用对象捕捉(F3快捷键) 启用对象捕捉追踪(F11快捷键) 勾选端点、中心、圆心、象限点等常用捕捉模式 追踪原理:命令执行时悬停光标可显示追踪矢量,再次悬停可停止追踪 3)极轴追踪设置 参数设置: 启用极轴追踪功能 设置角度增量为45度 确认后退出对话框 3. 绘制信号灯 1)绘制圆形 执行命令:"绘图→圆→圆心、半径"命令 绘制过程: 使用对象捕捉追踪定位矩形中心作为圆心 输入半径值30并按Enter确认 通过象限点捕捉确保圆形位置准确 2)绘制直线 操作要点: 选择"绘图→直线"命令 捕捉矩形上边中点作为起点 捕捉圆的上象限点作为终点 按Enter结束当前直线命令 重复技巧: 按Enter可重复最近使用的直线命令 通过圆心捕捉和极轴追踪绘制放射状直线 最终形成完整的信号灯指示图案 3)完成绘制 验证要点: 检查所有直线是否准确连接圆心和象限点 确认极轴追踪的45度增量是否体现 保存绘图文件(快捷键Ctrl+S)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值