Struts2入门
来源:互联网 发布:linux shell 编程入门 编辑:程序博客网 时间:2024/05/21 10:47
1. struts2与MVC
Struts2是当前流行的Java web MVC框架,MVC指的是Model,Controller,View相互分离的思想,Controller接收来自用户的输入,将用户输入的指令和数据传递给业务模型,即Model层,该层主要进行业务逻辑判断,对数据库进行操作,最后根据业务的不同选择不同的视图View,并将结果反馈给用户
2. struts2基本工作原理
Struts2的工作原理如下图:
用户发送的HttpServletRequest经过一系列的过滤器后到达ActionMapper,找到对应的Action的操作并调用相应的方法,得到结果结果类型。并以String类型返回,并根据不同的类型跳转到相应的视图。
返回的类型有SUCCESS , NONE , ERROR , LOGIN , INPUT,具体返回的情况如下
3. struts2核心文件的配置
要实现上述的功能,需要对几个核心文件进行配置:web.xml,struts.xml(可以用include包含其他的xml文件)。
- web.xml:基本上每个框架都有的,因为都需要与web应用整合,只有配置在web.xml文件中Servlet才会被应用加载。
通常所有的MVC框架都需要Web应用加载一个核心控制器,对应Struts2而言,需要加载StrutsPrepareAndExecuteFilter,只要Web应用加载了StrutsPrepareAndExecuteFilter,StrutsPrepareAndExecuteFilter就会加载Struts2框架。下面是一个栗子
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>HelloWorld</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>
其中 /* 表示对都有的文件都过滤
2. struts.xml:struts2的核心配置文件,主要负责管理应用中的Action映射,以及该Action包含的Result定义。
<?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> <include file="helloworld.xml"></include></struts>
其中包含的helloworld.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="default" namespace="/" extends="struts-default"> <default-action-ref name="index"></default-action-ref> <action name="index"> <result >/error.jsp</result> </action> <action name="helloworld_*" method="{1}" class="com.action.HelloWorldAction"> <result >/result.jsp</result> <result name="add">/add.jsp</result> </action> <action name="login" method="login" class="com.action.LoginAction"> <result >/success.jsp</result> <result name="input">/login.jsp</result> </action> </package></struts>
根标签是struts标签,一个标签下有多个package,一个package下有多个action,action标签下有对应不同结果String的result标签。
先看package标签,
<package name="default" namespace="/" extends="struts-default">
有三个属性,分别是name,名字空间namespace,以及action的后缀extends属性,默认后缀为.action。
action标签定义了相应的处理逻辑和要显示的视图
<action name="index" method="login" class="com.action.LoginAction"> <result >/error.jsp</result></action>
即在LoginAction.java中处理完逻辑(method不写的话默认是execute方法),返回后,如果返回结果是默认的SUCCESS就跳转到error.jsp页面,很好的体现了MVC的思想。
配置完成后在浏览器中输入相应的Action就可以实现不同页面的跳转。
除了上述的web.xml和Struts.xml外,还可以有struts.properties文件,但不是必须的。
3. 几点注意
Action搜索顺序:
为了解决避免Action太多,可以在使用动态方法调用
- 指定method属性,如上所示
- 感叹号方式(官方不推荐)
- 通配符方式,如
<action name="helloworld_*" method="{1}" class="com.action.HelloWorldAction">
3, 接收参数的3种方法
- 使用Action的属性接收,自动的,java文件中的属性要与表单中的name要一样
- 将属性封装到自定义类中接收,在jsp页面中的name中写
类.属性
接收即可 - 使用ModelDriven接收,实现ModelDriven<>接口,如:
public class LoginAction extends ActionSupport implements ModelDriven<User> { private User user = new User(); public String login() { return INPUT; } return SUCCESS; } @Override public User getModel() { return user; }
此时不能又set,get方法,也要自行new User();
4. List集合在jsp中对应的name为name="books[0].username"
等的形式
5. 返回INPUT实现表单验证,示例代码:
if (user.getUsername() == null || "".equals(user.getUsername())){ this.addFieldError("username", "username can not be empty"); return INPUT; }
- Struts2入门
- struts2 入门
- struts2入门
- struts2-入门
- struts2入门
- struts2入门
- Struts2入门
- struts2入门
- Struts2入门
- struts2 入门
- struts2-入门
- Struts2入门
- struts2 入门
- struts2入门
- Struts2入门
- struts2入门
- Struts2入门
- Struts2入门
- 数据结构考研时间复杂度分析学习
- PHP运行模式(cgi,fast-cgi,cli,web模块模式)
- Mysql学习总结(34)——Mysql 彻底解决中文乱码的问题
- 带你读开源—ASP.NET_MVC(二)
- 1031 查验身份证
- Struts2入门
- C#学习日记-字符与字符串
- Adapter
- (零)ELK学习之ELK安装配置
- Ubuntu 入坑第一天
- 丑数
- 医院门诊管理系统--华为OJ
- HttpServletRequest对象中的常用个的方法
- 1032 挖掘机技术哪家强