标签:struts2
struts2是对于MVC思想的一种实现,在学习struts2时与.net中的mvc去对比发现他们很相似。struts2也有自己的控制器,自己理解struts2中的控制器就是带有Action的方法。
实例是登陆时将登陆输入的内容传值到Action,通过Action去跳转到另外一个窗体。
login.jsp,用于提供输入框以及指定Action名称(login)。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="login">
username:<input tyep="text" name="username"><br>
password:<input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
</body>
</html>
web.xml设置一个拦截器。将请求纳入到过滤器管辖。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<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,自己感觉它更像是一个提供地图的地方,找到Action请求的名称(login),然后就可以跳转到指定的后台的类中;同时也在配置文件中配置了当返回success时需要跳转的页面。
<?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="struts2" extends="struts-default">
<action name="login" class="com.syq.struts2.LoginAction" method="myExecute">
<result name="success">/result.jsp</result>
</action>
</struts>
LoginAction.jsp提供了execute方法,当页面跳转到后台时会寻找此方法,进行进一步处理,这里可以和.net中控制器去对比,特别像。
package com.syq.struts2;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction 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 execute(){
return SUCCESS;
}
}
result.jsp,指定的执行execute方法后,如果返回sucess跳转到的页面。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
username:${requestScope.username}<br>
password:${requestScope.password}<br>
</body>
</html>
实例的流程:
1.用户单击表单login.jsp 请求资源”login”
2.请求路径匹配了web.xml中的拦截器/*,
3.纳入到过滤器org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter的管辖中。
4.运行到struts.xml中,寻找action中name为”login”的。action可能有多个。
5.实例化对应action的类,调用各种set方法,将用户提交的表单set给成员变量,接着执行execute方法,返回字符串success
6.返回的字符串success和struts.xml中action下的result中字符串进行比较,找到一样的字符串,转到指定的页面
7.利用requestScope取出相应的值
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:struts2
原文地址:http://blog.csdn.net/suneqing/article/details/46700489