Struts2总结1
来源:互联网 发布:mac 照片 文件夹 编辑:程序博客网 时间:2024/06/05 00:19
Struts2总结(一)
Struts2框架简介
- Struts2框架应用在web层框架
- struts2框架在struts1和webwork框架的基础上发展的全新的框架(全新)
- struts2解决问题:
入门案例:
下载Struts2的开发包
Struts2的官网: http://struts.apache.org
导入jar包:
1.解压 struts-2.3.24-all.zip
打开:
可以将struts2-blank.war改名为struts2-blan-rar,再用压缩文件打开
拷取下列文件:
创建action类
package com.heima;public class HelloAction { //默认执行的方法. public String execute(){ return "ok"; }}
配置action访问地址
配置action访问地址:
1.配置核心配置文件
2.配置模块配置文件,随类的位置配置.这种模式叫:分模块配置.
只需要将模块配置文件引入核心配置文件.
- 其必须配置的核心配置文件
- 1.名称和位置固定(位置必须在src下面,名称必须是struts.xml)
- 类似于servlet进行配置
引入DTD约束
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
其中struts为根标签,很多申明的前面都是根标签:
完整配置:
<?xml version="1.0" encoding="UTF-8"?><!-- 引入dtd约束 --><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="demo1" extends="struts-default" namespace="/"> <action name="hello" class="" type="dispatcher"> <!--typle: dispatcher ,redirect(重定向),redirectAction(重定向到Action)--> <result name="ok">/hello.jsp</result> </action> </package></struts>
struts2中标签的介绍:
package : 配置action访问地址,首先必须写package标签
- name属性:
- package标签用于区别不同的action
- 在一个配置文件中,可以写多个package标签,但是多个package标签的name属性值不能相同.
- extends属性:
- extends属性的值是固定的,必须是struts-default
- 写了这个值后,package标签里面的类具有action功能.
- namespace属性:
- 与action标签中的name属性值构成访问路径名称
action标签:
必须写在package标签里面,一个package标签里面可以写多个action,但属性值不能相同
- name
- 其他的name名字不能相同.
- class属性
- action类的全路径
- method属性:让action里面的不同的方法执行
- 默认为execute.
- 也可以写自己在action类中定义的方法,或action访问路径.
result标签:
- name :和action类中的方法返回值对应
- type属性:表示如何到路径中(掌握)
- 默认值: dispatcher ,转发
- redirect,重定向
- chain:不要,转发到action类
- redirectAction:重定向到action里面.
分模块配置
<include file="全路径"></include>如:com/heima/...../xxx.xml
配置struts2过滤器
在web.xml中配置.
可以打开先前我们解压打开的文件找到web.xml
拷贝其中关于过滤器的配置.
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
将项目发布到tomcat中,
访问:http://localhost:8080/struts2_day01/hello.action
Action编写方式:
第一种:创建普通类的方式
public class HelloAction{ public String execute(){ return null; }}
第二方式:创建类,实现接口
public class HelleAction implements Action{ public String execute() throws Exception{ return null; }}
第三种方式:创建类,继承ActionSupport类
建议使用这种方式,常用的方式.
public class HelleAction extends ActionSupport{}//ActionSupport implements Action;
访问Action的方法:
1.使用action标签属性 method
在method属性值写 执行的action方法名称.
<action name="login" class="com.heima.FramAction"> <result name="ok">/hello.jsp</result></action>
2.使用 通配符方式访问
<action name="User_*" class="com.heima.FramAction" method="{1}" > <!--*可以匹配任何方法,{1}代表的是* --> <result name="ok">/hello.jsp</result> <!--此处的ok对应方法中的ok--> <result name="update">/hello.jsp</result> </action>
//在java--action类中的配置public String login(){ return "ok"; }
Struts2常量配置修改:
第一种:在struts.xml中配置
在struts.xml进行配置,其默认的字符编码集为UTF-8如: <constant name ="struts.i18n.encoding" value="UTF-8"></constant>
第二种:在src下创建struts.properties
进行配置
第三种: 在web.xml中配置:
Action获取表单数据
request方式:(两种)
ActionContext类获取表单数据
package com.heima;import java.util.Map;import org.apache.catalina.tribes.util.Arrays;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class FramActionDemo01 extends ActionSupport { public String login(){ //1 获取对象,调用对象里面的方法得到表单数据 Map<String, Object> map = ActionContext.getContext().getParameters(); for(String s:map.keySet()){ //根据key得到value Object[] obj = (Object[]) map.get(s); System.out.println(s+"---"+Arrays.toString(obj)); } return "ok"; }}
ServletActionContext类获取表单数据
package com.heima;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class FramActionDemo01 extends ActionSupport { public String login(){ // 1 调用方法获取request对象 HttpServletRequest request = ServletActionContext.getRequest(); //2 调用request的方法得到表单数据 String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println(username+"--"+password); return "ok"; }}//request域 //1 得到request对象// HttpServletRequest request = ServletActionContext.getRequest();// request.setAttribute("req", "value");// // //session域// request.getSession().setAttribute("sess", "value");// // //servletcontext域// //1 获取到// ServletActionContext.getServletContext().setAttribute("context", "value");
Struts2封装获取表单
属性封装
//1 可以在action成员变量位置定义变量,把表单提交数据封装到变量里面//2 实现步骤//(1)在action成员变量位置定义变量,变量名称规范:和表单输入项name属性值一样//(2)生成变量的set和get方法package com.heima;import com.opensymphony.xwork2.ActionSupport;public class FramActionDemo01 extends ActionSupport { 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 login(){ System.out.println(username+"--"+password); return "ok"; }}
模型驱动封装
//创建实体类对象 //要求: 实体类属性名称 必须 和表单输入项name属性值一样package com.heima;import com.heima.entity.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class FramAction extends ActionSupport implements ModelDriven<User> { private User user=new User(); //这里一定要new对象,不然是获取不到数据 public User getUser() { return user; } @Override public User getModel() { return user; } public String login(){ System.out.println(user); return "ok"; }}
表达式封装
配置表单:
编写action获取数据
package com.heima;import com.heima.entity.User;import com.opensymphony.xwork2.ActionSupport;public class FramActionDemo01 extends ActionSupport { //1 声明实体类类型变量 private User user; //2 生成变量get和set方法 public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String login(){ System.out.println(user.getUsername()+"--"+user.getPassword()); return "ok"; }}
封装数据到list,map集合
package cn.itheima.form;import java.util.Map;import com.opensymphony.xwork2.ActionSupport;/** * 封装数据到list集合 * @author asus * */public class ListAction extends ActionSupport { //1 定义List集合类型变量// private List<User> list;// // public List<User> getList() {// return list;// }//// public void setList(List<User> list) {// this.list = list;// } //2.封装数据到map集合 private Map<String,User> map; public Map<String, User> getMap() { return map; } public void setMap(Map<String, User> map) { this.map = map; } public String execute() throws Exception { System.out.println(map); return "list"; }}
表单:
list集合表单
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body> <form action="${pageContext.request.contextPath }/list.action" method="post"> <!-- list[0]表示list中第一个user对象 --> username: <input type="text" name="list[0].username"/> <br/> password: <input type="text" name="list[0].password"/> <br/><br/> username: <input type="text" name="list[1].username"/> <br/> password: <input type="text" name="list[1].password"/> <br/> <input type="submit" value="提交"/> </form></body></html>
map表单
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body> <form action="${pageContext.request.contextPath }/list.action" method="post"> <!-- map['one']: 向map集合中设置key,key名称是one --> username: <input type="text" name="map['one'].username"/> <br/> password: <input type="text" name="map['one'].password"/> <br/><br/> username: <input type="text" name="map['abcd'].username"/> <br/> password: <input type="text" name="map['abcd'].password"/> <br/> <input type="submit" value="提交"/> </form></body></html>
0 0
- Struts2总结1
- Struts2知识总结1
- Struts2总结1
- struts2基本知识总结1
- Struts2总结1
- Struts2总结1
- Struts2总结-1
- Struts2学习总结1
- struts2总结(1)
- struts2学习总结(1)
- struts2入门知识总结1
- Struts2.3.15.1升级总结
- Struts2 重点总结 (1)
- struts2重要知识点总结(1):
- [Struts2]Struts2学习总结
- 【Struts2框架】Struts2总结
- 【Struts2】Struts2要点总结
- struts2 总结
- C++ 关键字 之 static
- 标志性文本编辑器 Vim 迎来其 25 周年纪念日
- Intellij IDEA 创建Web项目并在Tomcat中部署运行
- 每天一点小感想-11.8
- C语言知识
- Struts2总结1
- 七种排序方法
- Linux下的C语言编程——用链表实现栈操作
- 关于PHP的文件上传
- 微信开发之微信支付相关算法实现
- usaco The Castle
- Unity3D 几个基本动画(控制物体移动、旋转、缩放)
- Krpano vtourskin.xml 默认皮肤详解
- AVI编码器的常见编码