[JavaWeb] Struts2 入门教程

3 篇文章 0 订阅

Struts2 入门教程

最近在学习JavaWeb,在学会servlet之后,想进一步学习struts2框架却发现找不到合适的入门教程。后来发现了一个和不错的英文介绍网站。在此share给大家。本文就介绍一个常用的用户登录web,由此介绍struts2的使用方法。

Hello world Struts2

struts1和struts2还是有很多不同的,这里介绍struts2入门。

环境配置

我使用的是Intellj Idea, 在创建Project的时候选上Struts2就好了。
这是软件给我配好的library文件。

这里写图片描述

struts2介绍

struts2其实就是一个MVC框架,把不同的功能代码分离。其中M(Model)用的是JavaBean,可以高效地匹配键值对。V(View)用的是JSP,C(Controller)使用的是继承与ActionSupport的类,其中最主要的函数就是execute函数,后面会讲到。最后一点就是xml的配置文件,这个文件可以用于把view中的请求发送到Controller里面,在controller里面使用Model方法,处理数据,然后转发给View展示页面,由此来实现MVC模式。

准备工作基本就完成了。这个是web.xml的配置文件,没碰过,是软件给的。

这里写图片描述

我们按照4个步骤来介绍这个Project。

  • 1)Model部分,存储数据的部分。
  • 2)Controller部分,处理数据的部分。
  • 3)View部分,展示逻辑。
  • 4)xml配置。

那就开始吧~

Model部分

前面提到了,model部分其实就是为了使用JavaBean,而JavaBean有几个要求,1)每一个成员函数都要设定get和set方法(idea和eclipse都可以自动生成)2)缺省构造函数。3)要放在一个包内(这很重要!一定要放在包内啊!)

然后就像这样了。

package model;

/**
 * Created by yanzexin on 16/9/4.
 * All right reserved.
 */
public class User {
    private String userName;
    private String password;

    public User() {
        setUserName("yan");
    }

    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;
    }
}

这个部分很简单。

Controller

Controller其实上就是action,用于处理来自web的请求和发送结果。最重要的函数就是execute函数,这是用来处理数据的函数。

同样也要设定数据成员的set和get方法,因为后面也要被JavaBean使用。

package actions;

import com.opensymphony.xwork2.ActionSupport;
import model.User;

/**
 * Created by yanzexin on 16/9/4.
 * All right reserved.
 */
public class UserAction extends ActionSupport {
    private User m_user;

    public String execute() throws Exception {
        if (m_user.getUserName().equals("yan") && m_user.getPassword().equals("123")) {
            return "success";
        } else  {
            return "error";
        }
    }
    public UserAction() {
    }

    public User getM_user() {
        return m_user;
    }

    public void setM_user(User m_user) {
        this.m_user = m_user;
    }
}

view

这个就是JSP文件,只要struts2设定了很多的标签可以使用,但是我还不知道能不能设定他们的Style。

login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
         pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<%--<p><a href="<s:url action='Welcome'/>">Hello World</a></p>--%>
<h2>test!</h2>
<form action="Welcome.action">
  UserName: <input type="text" name="m_user.UserName"/>
  Password: <input type="password" name="m_user.password"/>
  <br>
  <input type="submit">
</form>
<%--<s:form action="Welcome">--%>
  <%--<s:textfield name="m_user.userName" label="username"/>--%>
  <%--<s:password name="m_user.password" label="password"/>--%>
  <%--<s:submit/>--%>
<%--</s:form>--%>
</body>
</html>

这里可以看出,既可以使用struts2给的标签来传输数据,也可以用HTML的form表单来传输数据。
注意name 一定要给出Action类里面的成员变量的名字。不然不知道要传给哪个成员。

Welcome.jsp

<%--
  Created by IntelliJ IDEA.
  User: yanzexin
  Date: 16/9/4
  Time: 上午8:38
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title>$Title$</title>
</head>
<body>
<h1> Hello struts2!</h1>
<h2><s:property value="m_user.userName"/> </h2>
</body>
</html>
<s:property value="m_user.userName"/>

这就类似于JavaBean中的获取数据了。

Fail.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
         pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<%--<p><a href="<s:url action='Welcome'/>">Hello World</a></p>--%>
<s:form action="Welcome">
    <s:textfield name="m_user.userName" label="username"/>
    <s:password name="m_user.password" label="password"/>
    <s:submit/>
</s:form>
<p>Log in failed! Try again!</p>
</body>
</html>

xml配置

这算是最难的部分了。

在src文件下有一个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>
    <!--code here!-->
    <package name="user" extends="struts-default">
        <action name="login">
            <result>/login.jsp</result>
        </action>
        <action name="Welcome" class="actions.UserAction" method="execute">
            <result name="success">/Welcome.jsp</result>
            <result name="error">/Fail.jsp</result>
        </action>
    </package>
</struts>

这里的 <package name="user" extends="struts-default">
name不知道用来干嘛。。

真正关键的是<action>这会用来匹配action。

        <action name="Welcome" class="actions.UserAction" method="execute">
            <result name="success">/Welcome.jsp</result>
            <result name="error">/Fail.jsp</result>
        </action>

这段代码的意思是说,调用Welcome方法,会映射到actions包里的UserAction(就是前面的Controller)并且调用execute方法。如果结果是success,就是调用/Welcome.jsp页面,如果结果是error就是调用/Fail.jsp页面。

源码就不放了。基本上重要的代码都给了。

希望大家也有所收获吧~

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值