码迷,mamicode.com
首页 > 其他好文 > 详细

SSH-struts2入门实例

时间:2015-06-30 22:03:40      阅读:108      评论:0      收藏:0      [点我收藏+]

标签: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取出相应的值

版权声明:本文为博主原创文章,未经博主允许不得转载。

SSH-struts2入门实例

标签:struts2

原文地址:http://blog.csdn.net/suneqing/article/details/46700489

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!