文档章节

一、struts入门

swift_hua
 swift_hua
发布于 2017/07/22 16:13
字数 1846
阅读 0
收藏 0

Struts2概述
1 struts2框架应用javaee三层结构中web层框架
2 struts2框架在struts1和webwork基础之上发展全新的框架
3 struts2解决问题:


4 struts2版本

struts2.3.24
5 web层常见框架
(1)struts2
(2)springMVC

 

Struts2框架入门
第一步 导入jar包


(1)在lib中有jar包,不能把这些jar都导入到项目中
(2)到apps目录里面,找到示例程序,从示例程序复制jar包
 

第二步 创建action

第三步 配置action类访问路径
(1)创建struts2核心配置文件
- 核心配置文件名称和位置是固定的
- 位置必须在src下面,名称 struts.xml

(2)引入dtd约束

(3)action配置

访问路径:
http://127.0.0.1/struts2_day01/hello.action

第四步 配置struts2过滤器

 

Struts2执行过程
画图分析过程

 

查看源代码

1 过滤器在服务器启动时候创建,创建过滤器时候执行init方法
(1)在init方法中主要加载配置文件
- 包含自己创建的配置文件和struts2自带配置文件
** struts.xml
** web.xml

 

Struts2的核心配置文件
 
1 名称和位置固定的

2 在配置文件中主要三个标签 package、action、result,标签里面的属性

标签package
1 类似于代码包,区别不同的action,要配置action,必须首先写package标签,在package里面才能 配置action

2 package标签属性
(1)name属性
- name属性值根功能本身没有关系的,
- 在一个配置文件中可以写多个package标签,name属性值不能相同的

(2)extends属性
 extends="struts-default"
- 属性值固定的,struts-default
- 写了这个属性之后,在package里面配置的类具有action功能

(3)namespace属性
- namespace属性值和action标签里面的name属性值构成访问路径

标签action
1 action标签配置action访问路径

2 action标签属性
(1)name属性
- namespace属性值和action标签里面的name属性值构成访问路径
- 在package标签里面写多个action标签,但是action的name属性值不能相同的

(2)class属性
- action全路径

(3)method属性
- 比如在action里面默认执行的方法execute方法,但是在action里面写其他的方法
- 让action里面多个方法执行,使用method进行配置

标签result
1 根据action的方法返回值,配置到不同的路径里面

2 result标签属性
(1)name属性
- 和方法返回值一样

(2)type属性
- 配置如何到路径中(转发或者重定向)
- type属性默认值 做转发操作

 

Struts2常量配置
1 struts2框架,帮我们实现一部分功能,struts2里面有常量,在常量里面封装一部分功能

2 struts2默认的常量位置(记住)

3 修改struts2默认常量值
(1)常用的方式
- 在struts.xml中进行配置
 
(2)还有两种方式(了解)
- 在src下面创建 struts.properties,进行修改
- 在web.xml进行配置

4 介绍最常用常量
 
(1)表单提交数据到action里面,在action可以获取表单提交数据,
(2)表单提交数据有中文,有乱码问题,解决:
- post提交直接设置编码
- get提交做编码转换

(3)如果在action获取表单通过post方式提交中文,中文乱码问题帮解决了,不需要自己处理问题

 

分模块开发
1 单独写配置文件,把配置文件引入到核心配置文件中

Action编写方式
1 action编写有三种方式
第一种 创建普通类,这个不继承任何类,不实现任何接口

第二种 创建类,实现接口 Action
 


 
 第三种 创建类,继承类 ActionSupport(一般使用)

 

访问action的方法(重点)
1 有三种方式实现
第一种 使用action标签的method属性,在这个属性里面写执行的action的方法

第二种 使用通配符方式实现***

第三种 动态访问实现(不用)

2 演示错误
(1)如果action方法有返回值,在配置文件中没有配置,出现错误

(2)在action里面的方法有返回值,如果有返回值时候类型必须是String
(3)action里面的方法可以没有返回值,没有返回值时候,在result标签不需要配置
- 把方法写成void
- 让返回值,返回 ”none”

使用action标签method属性
1 创建action,创建多个方法

2 使用method配置

缺陷:action每个方法都需要配置,如果action里面有多个方法,配置很多的action

使用通配符实现(重点)
1 在action标签里面name属性,name属性值里面写 符号 *  星号
(1)* 理解: 表示匹配任意内容
- 比如访问hello,* 可以匹配到
- 比如访问add,* 可以匹配到
 

 

案例-客户列表
 


 

附录源码:

HelloAction.java

package cn.itcast.action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport{

	/*
	 * (1)每次访问servlet时候,都会执行service方法
	 * - 写类继承HttpServlet,重写类 里面的方法
	 * - 在web.xml中配置servlet访问路径
	 * 
	 * (2)访问action,每次访问action时候,默认执行名称execute方法
	 * - 配置action访问路径
	 * */
	public String execute() {
		System.out.println("action.............");
//		return "none";
		return NONE;
	}
	
}

PersonAction.java

package cn.itcast.action;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 继承类
 * @author asus
 *
 */
public class PersonAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return SUCCESS;
	}
}

UserAction.java

package cn.itcast.action;

import com.opensymphony.xwork2.Action;

/**
 * 实现接口
 * @author asus
 *
 */
public class UserAction implements Action{

	@Override
	public String execute() throws Exception {
//		return "success";
		return SUCCESS;
	}

}

hello.xml

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

	<package name="hellodemo" extends="struts-default" namespace="/">
		<!-- name: 访问名称 -->
		<action name="hello" class="cn.itcast.action.HelloAction">
			<!-- 配置方法的返回值到页面 -->
			<result name="ok">/hello.jsp</result>
		</action>
	</package>
	
</struts>

BookAction.java

package cn.itcast.method;

import com.opensymphony.xwork2.ActionSupport;

public class BookAction extends ActionSupport {

	//添加
	public String add() {
		System.out.println("add..............");
		return NONE;
	}
	
	//修改
	public String update() {
		System.out.println("update..............");
		return NONE;
	}
}

struts.xml

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

	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	
	<!-- <package name="hellodemo" extends="struts-default" namespace="/">
		name: 访问名称
		<action name="hello" class="cn.itcast.action.HelloAction">
			配置方法的返回值到页面
			<result name="ok">/hello.jsp</result>
		</action>
	</package>  -->
	
	<!-- 引入hello.xml文件 -->
	<!-- <include file="cn/itcast/action/hello.xml"></include> -->
	
	<!-- 配置action的方法访问 -->
	<!-- <package name="methoddemo" extends="struts-default" namespace="/">
		有method属性:写要执行的action里面的方法的名称  
		<action name="addAction" class="cn.itcast.method.BookAction" method="add"></action>
		执行update方法
		<action name="updateAction" class="cn.itcast.method.BookAction" method="update"></action>
	</package> -->
	<!-- 通配符方式实现 -->
	<package name="methoddemo" extends="struts-default" namespace="/">
		<!-- 
			name属性值里面写符号 * 
			(1)执行action里面的add方法,访问 book_add,使用book_*可以匹配到,*相当于变成 add
			
			(2)执行action里面的update方法,访问book_update,使用book_*可以匹配到,*相当于变成 update
			上面两个路径使用 book_* 可以匹配到
			method属性写*值
		 -->
		<action name="book_*" class="cn.itcast.method.BookAction" method="{1}">
		</action>
	</package>
</struts>



web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>struts2_day01</display-name>
    <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>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

hello.jsp

<%@ 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>
	<h1>hello struts2....</h1>
</body>
</html>

注:jsp页面均是html格式

© 著作权归作者所有

共有 人打赏支持
swift_hua
粉丝 0
博文 33
码字总数 20868
作品 0
成都
程序员
私信 提问
Struts2知识点小结(一)

一、struts2简介   1、Struts2是一个基于MVC设计模式的Web应用框架 只要是web层框架 一般就会遵守MVC设计模式 2、struts2与struts1的关系? 没关系 WebWork基于xwork 3、struts2是一个可插拔...

it~沃克尔
08/08
0
0
SSH-Struts第三弹:传智播客视频教程第一天上午的笔记

一、 框架概述 1、三大框架 : 是企业主流 JavaEE 开发的一套架构 Struts2 + Spring + Hibernate 2、 什么是框架?为什么要学框架 ? 框架 是 实现部分功能的代码 (半成品),使用框架简化企...

candy-yun
2014/03/26
0
0
Apache Struts最新漏洞 远程代码执行漏洞预警 2018年11月08日

2018年11月8日,SINE安全监控检测中心,检测到Apache Struts官方更新了一个Struts漏洞补丁,这个漏洞是Apache Struts目前最新的漏洞,影响范围较广,低于Apache Struts 2.3.35的版本都会受到...

网站安全
11/08
0
0
MVC 框架 - Apache Struts

Struts 是 Apache软件基金会(ASF)赞助的一个开源项目。它最初是 Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web...

匿名
2008/09/07
0
8
Apache Struts最新漏洞 远程代码执行漏洞预警

2018年11月8日,SINE安全监控检测中心,检测到Apache Struts官方更新了一个Struts漏洞补丁,这个漏洞是Apache Struts目前最新的漏洞,影响范围较广,低于Apache Struts 2.3.35的版本都会受到...

网站安全
11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

探索802.11ax

802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

linuxprobe16
5分钟前
0
0
使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
43分钟前
4
0
深入理解Plasma(四):Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

HiBlock
昨天
1
0
命令参数的三大风格:Posix、BSD、GNU

今天读到命令行中参数的风格有三大类,即Unix/Posix、BSD、GNU。分别有以下特征: Unix/Posix风格,即命令后的参数,可以分组,便必须以连字符开头,如ps -aux。 BSD风格,即命令后的参数,可...

大别阿郎
昨天
2
0
PHP生成图片验证码

PHP生成图片验证码 /** * PHP生成图片验证码 * Class VerifyImage */class VerifyImage{ // 生成随机字串 private $verifyCode; // 图片对象 private $image; /**...

DrChenXX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部