struts2学习(2)struts2核心知识
一、Struts2 get/set 自动获取/设置数据
根据上一章。中的源码继续。
HelloWorldAction.java中private String name,自动获取/设置name:
package com.cy.action;
import com.opensymphony.xwork2.Action;
public class HelloWorldAction implements Action{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute() throws Exception {
System.out.println("执行了Action的默认方法");
return SUCCESS;
}
}
helloWorld.jsp:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${name }你好!!
</body>
</html>
1)使用get方式:
浏览器中访问:http://localhost:8080/Struts2Chap01/hello?name=asdasd
结果:

2)post方式:
编写index.jsp页面:
<body>
<form action="hello" method="post">
name: <input type="text" name="name"/>
<input type="submit" value="submit" />
</form>
</body>
浏览器中访问:http://localhost:8080/Struts2Chap01/index.jsp,输入name:

点击submit:

二、ActionSupport 类引入
HelloWorldAction2.java中继承ActionSupport:
package com.cy.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction2 extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute() throws Exception {
System.out.println("执行了HelloWorldAction2 Action的默认方法");
return SUCCESS;
}
}
struts.xml中修改为com.cy.action.HelloWorldAction2:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 可以创建很多的package,用name来区分 -->
<package name="helloWorld" extends="struts-default">
<action name="hello" class="com.cy.action.HelloWorldAction2">
<!-- 默认是转发,转发到helloWorld.jsp -->
<result name="success">helloWorld.jsp</result>
</action>
</package> </struts>
测试结果ok;

package com.cy.action; import com.cy.model.User;
import com.cy.service.UserService;
import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport{ private static final long serialVersionUID = 1L;
private UserService userService = new UserService();
private String userName;
private String password; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String execute() throws Exception {
System.out.println("执行了UserAction Action的默认方法");
User user = new User();
user.setUserName(userName);
user.setPassword(password);
if(userService.login(user)){
return SUCCESS;
}else{
return ERROR;
} } }
com.cy.model.User:
package com.cy.model;
public class User {
private String userName;
private String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
com.cy.service.UserService:
package com.cy.service;
import com.cy.model.User;
public class UserService {
public boolean login(User user){
if("cy".equals(user.getUserName()) && "123456".equals(user.getPassword())){
return true;
}else{
return false;
}
}
}
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 可以创建很多的package,用name来区分 -->
<package name="helloWorld" extends="struts-default">
<action name="hello" class="com.cy.action.HelloWorldAction2">
<!-- 默认是转发,转发到helloWorld.jsp -->
<result name="success">helloWorld.jsp</result>
</action> <action name="user" class="com.cy.action.UserAction">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>
</package> </struts>
login.jsp登录界面:
<body>
<form action="user" method="post">
用户名: <input type="text" name="userName"/><br>
密码: <input type="password" name="password"/><br>
<input type="submit" value="登录" />
</form>
</body>
success.jsp登录成功的页面:
<body>
登录成功!
</body>
error.jsp登录失败的界面:
<body>
登录失败!
</body>
测试:
浏览器访问http://localhost:8080/Struts2Chap01/login.jsp,输入cy,123456

登录成功:

B:javaBean类型属性驱动:
将上面的UserAction中改为private User user;javaBean的方式:
package com.cy.action; import com.cy.model.User;
import com.cy.service.UserService;
import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport{ private static final long serialVersionUID = 1L;
private UserService userService = new UserService();
private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} public String execute() throws Exception {
System.out.println("执行了UserAction Action的默认方法 采用javaBean");
if(userService.login(user)){
return SUCCESS;
}else{
return ERROR;
} } }
login.jsp登录界面需要修改为如下:
<body>
<form action="user" method="post">
用户名: <input type="text" name="user.userName"/><br>
密码: <input type="password" name="user.password"/><br>
<input type="submit" value="登录" />
</form>
</body>
测试结果ok
第二种:模型驱动:
UserAction.java: //主要实现ModelDriven<User>, private User user = new User(),这里要new一个user:
package com.cy.action; import com.cy.model.User;
import com.cy.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven; public class UserAction extends ActionSupport implements ModelDriven<User>{ private static final long serialVersionUID = 1L;
private UserService userService = new UserService();
private User user = new User(); public String execute() throws Exception {
System.out.println("执行了UserAction Action的默认方法 采用模型驱动");
if(userService.login(user)){
return SUCCESS;
}else{
return ERROR;
}
} public User getModel() {
return user;
} }
login.jsp:
<body>
<form action="user" method="post">
用户名: <input type="text" name="userName"/><br>
密码: <input type="password" name="password"/><br>
<input type="submit" value="登录" />
</form>
</body>
四、Struts2处理传入多个值

1、需求:选择多个复选框,将复选框选中的值传入到后台;
2、需求:前端批量添加多个Student到后台,后台接受
HobbyAction.java:
package com.cy.action;
import com.opensymphony.xwork2.Action;
public class HobbyAction implements Action{
private String[] hobby;
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String execute() throws Exception {
System.out.println("执行了HobbyAction的默认方法");
for(String h : hobby){
System.out.println(h);
}
return SUCCESS;
}
}
StudentAction.java:
package com.cy.action; import java.util.List; import com.cy.model.Student;
import com.opensymphony.xwork2.Action; public class StudentAction implements Action{ private List<Student> students; public List<Student> getStudents() {
return students;
} public void setStudents(List<Student> students) {
this.students = students;
} public String execute() throws Exception {
System.out.println("执行了StudentAction的默认方法");
for(Student s : students){
System.out.println(s);
}
return SUCCESS;
} }
com.cy.model.Student.java:
package com.cy.model;
public class Student {
private String name;
private String sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", sex=" + sex + ", age=" + age + "]";
}
}
struts.xml配置:
<struts>
<package name="helloWorld" extends="struts-default">
<action name="hobby" class="com.cy.action.HobbyAction">
<result name="success">success.jsp</result>
</action>
<action name="student" class="com.cy.action.StudentAction">
<result name="success">success.jsp</result>
</action>
</package>
</struts>
hobby.jsp:
<body>
<form action="hobby" method="post">
爱好:
<input type="checkbox" name="hobby" value="唱歌"/>唱歌
<input type="checkbox" name="hobby" value="跳舞"/>跳舞
<input type="checkbox" name="hobby" value="睡觉"/>睡觉
<input type="checkbox" name="hobby" value="玩CF"/>玩CF
<input type="submit" value="提交"/>
</form>
</body>
addstudents.jsp:
<body>
<form action="student" method="post">
<table>
<tr>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
</tr>
<tr>
<!-- 这边students[0].name命名有规范的,不然action中取不到 -->
<td><input type="text" name="students[0].name"/></td>
<td><input type="text" name="students[0].sex"/></td>
<td><input type="text" name="students[0].age"/></td>
</tr>
<tr>
<td><input type="text" name="students[1].name"/></td>
<td><input type="text" name="students[1].sex"/></td>
<td><input type="text" name="students[1].age"/></td>
</tr>
<tr>
<td colspan="3">
<input type="submit" value="提交"/>
</td>
</tr>
</table>
</form>
</body>
success.jsp:
<body>
OK!
</body>
测试结果:
1)


2)


五、struts.xml的配置:

<struts>
<package name="foreground" namespace="/fore" extends="struts-default">
<action name="studentList" class="com.cy.action.ForeStudent">
<result name="success">${pageContext.request.contextPath}/success.jsp</result>
</action>
</package>
<package name="background" namespace="/back" extends="struts-default">
<action name="studentList" class="com.cy.action.BackStudent" method="show">
<result name="success">${pageContext.request.contextPath}/success.jsp</result>
</action>
</package>
<!-- 抽象包,让别人继承,比如过滤敏感词汇啊啥的 -->
<package name="infoFilter" abstract="true"></package>
</struts>
com.cy.action.ForeStudent.java:
package com.cy.action;
import com.opensymphony.xwork2.ActionSupport;
public class ForeStudent extends ActionSupport {
public String execute() throws Exception {
System.out.println("执行了ForeStudent Action的默认方法");
return SUCCESS;
}
}
com.cy.action.BackStudent.java:
package com.cy.action;
import com.opensymphony.xwork2.ActionSupport;
public class BackStudent extends ActionSupport{
public String execute() throws Exception {
System.out.println("执行了BackStudent Action的默认方法");
return SUCCESS;
}
public String show() throws Exception{
System.out.println("执行了BackStudent show方法");
return SUCCESS;
}
}
测试结果:
1)/fore/studentList

2)/back/studentList:

console打印:
执行了BackStudent show方法
struts2学习(2)struts2核心知识的更多相关文章
- Struts2学习笔记——Struts2与Spring整合
Struts2与Spring整合后,可以使用Spring的配置文件applicationContext.xml来描述依赖关系,在Struts2的配置文件struts.xml来使用Spring创建的 ...
- Struts2学习一----------Struts2的工作原理及HelloWorld简单实现
© 版权声明:本文为博主原创文章,转载请注明出处 Struts2工作原理 一个请求在Struts2框架中的处理步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2.这个请求 ...
- struts2学习(4)struts2核心知识III
一.result配置: result - name 就是前面返回的值,success,error等. type: dispatcher. 默认是这个,底层是jsp的forward: redirect: ...
- struts2学习(3)struts2核心知识II
一.struts.xml配置: 1.分模块配置方法: 比如某个系统多个模块,我们把资产管理模块和车辆管理模块,分开,在总的struts.xml配置文件中include他们: 工程结构: struts. ...
- struts2学习(1)struts2 helloWorld
一.struts2简介: 二.helloWorld: 1)工程结构: HelloWorldAction.java: package com.cy.action; import com.opensymp ...
- Struts2学习笔记——Struts2搭建和第一个小程序
1.新建web项目 2.配置Struts2核心过滤器 (1)打开web.xml文件,做以下配置: <?xml version="1.0" encoding="UTF ...
- Struts2学习笔记--Struts2的体系结构
1. Struts2体系结构 Struts是以前端控制器框架为主体的框架,用户的请求会通过控制器选择不同的Action类来执行具体的操作,在Action类中所有的Servlet对象(request.r ...
- struts2学习(15)struts2防重复提交
一.重复提交的例子: 模拟一种情况,存在延时啊,系统比较繁忙啊啥的. 模拟延迟5s钟,用户点了一次提交,又点了一次提交,例子中模拟这种情况: 这样会造成重复提交: com.cy.action.St ...
- struts2学习(14)struts2文件上传和下载(4)多个文件上传和下载
四.多个文件上传: 五.struts2文件下载: 多个文件上传action com.cy.action.FilesUploadAction.java: package com.cy.action; i ...
随机推荐
- hdu 1163 九余数定理
Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- codeforces 11 B.Jumping Jack 想法题
B. Jumping Jack Jack is working on his jumping skills recently. Currently he's located at point zero ...
- python 三维数组找最小值
#声明三维数组 num=[[[,,],[,,],[,,]], \ [[,,],[,,],[,,]]] value=num[][][]#设置main为num数组的第一个元素 ): ): ): if(va ...
- JavaScript--变量和运算符
JavaScript--变量和运算符 一.心得 JavaScript语法:变量声明 var弱类型 var中可以是任何类型在JavaScript里面,单&单|是位运算符.变量没有值使用的话就是u ...
- CPU上下文切换详解
CPU上下文切换详解 原文地址,译文地址,译者: 董明鑫,校对:郑旭东 上下文切换(有时也称做进程切换或任务切换)是指CPU 从一个进程或线程切换到另一个进程或线程.进程(有时候也称做任务)是指一个程 ...
- 雷林鹏分享:Ruby 迭代器
Ruby 迭代器 迭代器是集合支持的方法.存储一组数据成员的对象称为集合.在 Ruby 中,数组和散列可以称之为集合. 迭代器返回集合的所有元素,一个接着一个.在这里我们将讨论两种迭代器,each 和 ...
- SQL语言的增删改查
select(查), update(改), delete(删), insert into(增) select * from table_name 获取表中所有字段 select id, name, ...
- 004——php字符串中处理函数(三)
<?php /** * 字符串替换函数: * str_replace(); 替换字符串或数组元素,区分大小写,第四个参数可选,用于统计替换次数 * str_ireplace()不区分大小写替换 ...
- centos6.9使用yum安装mysql(简单粗暴,亲测有效)
第1步.yum安装mysql[root@stonex ~]# yum -y install mysql-server安装结果:Installed: mysql-server.x86_64 0: ...
- angular学习笔记二
已经了解了angular的基础知识以后,我们继续开始了解angular的基础模块,首先在写angular应用时需要引入angularjs 在使用angular时必须为它定义边界(angular的作用 ...