[JavaWeb] Struts2 入门教程

Struts2 入门教程

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

Hello world Struts2

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

环境配置

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

[JavaWeb] Struts2 入门教程_第1张图片

struts2介绍

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

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

[JavaWeb] Struts2 入门教程_第2张图片

我们按照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" %>

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Basic Struts 2 Application - Welcometitle>
head>
<body>
<h1>Welcome To Struts 2!h1>
<%--

"">Hello World

--%>
<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> <%--"Welcome">--%> <%--"m_user.userName" label="username"/>--%> <%--"m_user.password" label="password"/>--%> <%----%> <%----%> 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>
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" %>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Basic Struts 2 Application - Welcometitle>
head>
<body>
<h1>Welcome To Struts 2!h1>
<%--

"">Hello World

--%>
<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文件用于配置映射关系。





<struts>
    
    <package name="user" extends="struts-default">
        <action name="login">
            <result>/login.jspresult>
        action>
        <action name="Welcome" class="actions.UserAction" method="execute">
            <result name="success">/Welcome.jspresult>
            <result name="error">/Fail.jspresult>
        action>
    package>
struts>

这里的
name不知道用来干嘛。。

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

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

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

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

希望大家也有所收获吧~

你可能感兴趣的:(Web,Java)