1.struts2的工作原理和文件结构


2.struts2核心文件

struts核心文件包括:

1)web.xml

2)struts.xml

3)struts.properties


3.Action搜索顺序


4.动态方法调用

其实意思就是,当多个不同请求到来的时候,势必会要求多个Action。一个Action中添加多个method,处理不同的请求,返回不同的视图资源!

动态方法调用有3种形式

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

1)在配置文件中添加method属性

2)感叹号

3)通配符方式 *


5.指定多个配置文件

<include file="......"></include>

如果Action太多,写在一个xml文件中就会很不方便,可以分散配置,用include聚合!


6.默认action,当struts中没有配置请求的Action,可以设置默认的action,指定跳转视图。

<default-action-ref name="index"></default-action-ref>
<action name="index"><result>/error.jsp</result>
</action>

7.struts2后缀名

jsp,do,html,....可以在三个核心文件中配置,任何一个都行,可用于视图伪装

在web.xml中配置后缀为do的实现

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><display-name>Struts Blank</display-name><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class><init-param><param-name>struts.action.extension</param-name><param-value>do</param-value></init-param></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>


8.接受参数

1)action属性接受

2)Domain Model 接收

3)Model Driven接收(推荐) 

      实现ModelDriven<T>接口

用第三种方式写一个前端实例,接受用户名密码,控制页面跳转到成功登陆。

LoginAction继承ModelDriven<T>接口,实现getModel方法。

package com.southstar.demo;import com.opensymphony.xwork2.ModelDriven;public class LoginAction implements ModelDriven<User>{@Overridepublic User getModel() {return user;}private User user=new User();public String login(){System.out.println(user.getUsername());return "success";}public String add(){return "success";}}

login.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="LoginAction" method="post">用户名:<input type="text" name="username">密码:<input type="password" name="password">年龄:<input type="text" name="age"><input type="submit" value="提交"/></form>
</body>
</html

User对象类

package com.southstar.demo;public class User {private String username;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;}private String password;public int getAge() {return age;}public void setAge(int age) {this.age = age;}private int age;}

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
登陆成功!
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><display-name>Struts Blank</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>
</web-app>

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="hello" namespace="/" extends="struts-default"><default-action-ref name="index"></default-action-ref><action name="index"><result>/error/no.jsp</result></action><action name="LoginAction" method="login" class="com.southstar.demo.LoginAction"><result name="success">/success.jsp</result><result name="input">/login.jsp</result></action><!--<action name="sayHi" method="sayHi" class="com.southstar.demo.HelloAction" ><result name="success">/hello/sayHi.jsp</result></action>--></package><constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
</struts>

struts2框架入门相关推荐

  1. java struts2 框架 入门简介

    目录 一.Struts2框架执行流程 二.Struts2的快速入门 1.导入jar包 2.配置web.xml文件 3.配置struts.xml文件 4.创建Action来完成逻辑操作 三.Struts ...

  2. Struts2框架简单入门

    Struts2框架简单入门 1.前言 2.Struts2简介 2.1.Struts2介绍 2.2.Struts2优缺点 2.2.1.优点 2.2.2.缺点 2.2.3.Struts2获取 3.入门案例 ...

  3. Struts2入门第一讲——Struts2框架的快速入门

    Struts2框架的概述 Struts2是一种基于MVC模式的轻量级Web框架,它自问世以来,就受到了广大Web开发者的关注,并广泛应用于各种企业系统的开发中.目前掌握Struts2框架几乎成为Web ...

  4. Struts2框架学习总结(从入门到精通)

    文章目录 一.Struts2入门 struts2概述 struts2入门案例 struts2底层执行过程 struts2相关配置 struts2的核心配置文件struts.xml struts2常量配 ...

  5. Struts2框架学习笔记_Struts2入门

    文章为学习struts的笔记,可供读者参考,有不足之处还望之指出. 参考: POJO与JavaBean的区别 Velocity Velocity官网 FreeMarker XSLT struts2 学 ...

  6. 基于Struts2框架的名片管理系统

    目录 1.系统设计 2.数据库设计 3.系统管理 4.用户管理 5.名片管理 本篇博文将分享一款基于Struts2框架的名片管理系统,JSP引擎为Tomcat9.0,数据库采用的是MySQL5.5,集 ...

  7. Struts2框架完成登录操作案例

    一个简单的登录案例思路分析 在这个案例中,我们要使用struts2框架怎样解决 重点: struts2框架如何完成原来由servlet完成的工作. Struts2框架如何完成请求参数的封装处理 Str ...

  8. struts2找不到action_第一次用上Struts2框架做Web开发的体验……

    SliiyStruts2 又名 sb-struts2,因为struts真的太难用了(也许在很多年前是很好用的,但是现在看来,被其他框架秒成渣) 前言 想不到我还是得和这struts框架打交道啊,从一开 ...

  9. (转)Struts2快速入门

    http://blog.csdn.net/yerenyuan_pku/article/details/66187307 Struts2框架的概述 Struts2是一种基于MVC模式的轻量级Web框架, ...

最新文章

  1. Visual Studio解决freopen等函数报错函数安全问题
  2. boost::mpl模块实现comparison相关的测试程序
  3. 英特尔软件学院与中国一起迎接2008
  4. 电源模块怎么选?以下6点你都知道吗?
  5. php读取三维数组,php 读取多维数组方法_PHP教程
  6. 【数据库系统】SQL查询的注意事项
  7. 我这么认真地问问题,你为啥不回答???
  8. 【C++】 29_类中的函数重载
  9. android 4 时间限制,Android触摸精灵
  10. 软件测试输入准则,单元测试准则
  11. Amcharts属性的含义
  12. php无法访问_php突然不能访问的原因
  13. [裴礼文数学分析中的典型问题与方法习题参考解答]4.5.1
  14. oceanbase安装记录
  15. python pil模块
  16. java身份证以及手机号的工具类
  17. Wormhole连接教程
  18. 自述从被坑70000到开工作室月入100000+:我做自动项目这一年辛酸史!
  19. 一个程序员的面试经历(一)
  20. Caused by: org.postgresql.util.PSQLException: ERROR: column xxx.xxx does not exist

热门文章

  1. Windows系统文件详解【大全】
  2. iOS开发UI基础—手写控件,frame,center和bounds属性
  3. J2EE 字符 字节 编码知识概念
  4. MinGW下静态编译、链接Qt 5.0
  5. 2、Get和post的区别
  6. .net 的水晶报表在push模式下的多表关联问题
  7. 解读高效的神经架构搜索ENAS
  8. 快速傅里叶变换Matlab示例
  9. grep、cut、awk、sed文本处理
  10. grep、egrep、fgrep的用法与特性详解