Struts2 入门修行第一天 | 小节二
通过上一篇我们基本搭建一个 Struts2 环境成功啦,现在我们页面需要数据传递等
我们这里把第一个页面修改为一个添加数据的页面,在第二个页面显示第一个页面录入的数据
1. 在这里新建一个JavaBean Person.java
1 package com.cookie.bean; 2 3 public class Person { 4 5 private Integer id; 6 private String name; 7 private String desc; 8 9 public String detail(){ 10 // 打印当前对象到控制台 11 System.out.println(this); 12 // 给当前对象编号赋值 13 this.setId(1001); 14 15 return "success"; 16 } 17 18 public Integer getId() { 19 return id; 20 } 21 public void setId(Integer id) { 22 this.id = id; 23 } 24 public String getName() { 25 return name; 26 } 27 public void setName(String name) { 28 this.name = name; 29 } 30 public String getDesc() { 31 return desc; 32 } 33 public void setDesc(String desc) { 34 this.desc = desc; 35 } 36 37 @Override 38 public String toString() { 39 return "Person [id=" + id + ", name=" + name + ", desc=" + desc + "]"; 40 } 41 }
2. 修改之前 index.jsp 为
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <form action="detail.action" method="post"> 11 name: <input type="text" name="name" /><br><br> 12 desc: <input type="text" name="desc" /><br><br> 13 <input type="submit" value="submit" /> 14 </form> 15 </body> 16 </html>
3. 修改之前的 detail.jsp 为
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> id: ${id}<br><br> name: ${name}<br><br> desc: ${desc}<br><br> </body> </html>
4. 修改之前的 struts.xml 为
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 6 <struts> 7 <package name="hello" extends="struts-default"> 8 <action name="detail" class="com.cookie.bean.Person" method="detail"> 9 <result>/detail.jsp</result> 10 </action> 11 </package> 12 </struts>
5. 启动项目 运行
在第一个画面两文本框中分别输入,zhangsan / 小学生 , 然后点击提交按钮
1). 在控制台中输出 Person [id=null, name=zhangsan, desc=小学生]
2). 在第二个页面 1001 / zhangsan / 小学生
6. 通过上面例子,得出,第一个页面把输入提交上去并复制给 Person 对象, 在Person 下面的detail 方法中给当前对象复制一个编号,也回传到第二个界面
7. 这里来解析哈上面一串操作
1). package: 三个属性
|-----name: 给当前 package 定义一名称
|-----extends: 指定当前 package 继承哪一个 package (这里struts-default 为 struts2 提供的一个默认设置,里面有很多默认类,返回类型什么的,可以去 struts-default.xml 中取仔细查看)
|-----namespace: 指定当前模块路径,及默认值为 / 也可以指定一个值,例:namespace="/hello" 那么访问action 路径前就得加上 /hello
2). action: 三个属性
|-----name:当前 action 路径,这里不带后缀
|-----class:当前 action 映射的 java 类(默认为:com.opensymphony.xwork2.ActionSupport)
|-----method: 当前 action 路径具体访问的方法(默认为:execute)
3). result: 两个属性
|-----name: action映射方法的返回值(默认为:success)
|-----type: 页面跳转方式(默认为:转发[dispatcher])
|-----chain:转发到 action
|-----dispatcher: 转发到 jsp
|-----redirectAction: 重定向到 action
|-----redirect: 重定向到 jsp
|-----stream: 文件上传
8:Person -> detail()
这里会把参数通过set 方法自动给当前 Action 赋值,也可以在该方法中为当前对象属性赋值,修改等,页面通过 EL 表达式获取
浙公网安备 33010602011771号