• Struts简单入门实例


    转自http://www.cnblogs.com/xing901022/p/3961661.html

    有改动

    struts2其实就是为我们封装了servlet,简化了jsp跳转的复杂操作,并且提供了易于编写的标签,可以快速开发view层的代码。

    过去,我们用jsp和servlet搭配,实现展现时,大体的过程是:

    1 jsp触发action

    2 servlet接受action,交给后台class处理

    3 后台class跳转到其他的jsp,实现数据展现

    现在有了struts2,实现过程变为

    1 jsp出发action

    2 struts2拦截请求,调用后台action

    3 action返回结果,由不同的jsp展现数据

    前面两个是apache commons的jar包,暂且忽略

    freemarker提供了另一种展现方式

    ognl提供了OGNL表达式

    struts2-core提供struts2核心包

    xwork-core由于struts2很多事基于webwork的,因此也需要这个的核心包

    我们提供3个jsp

    登录界面login.jsp

    <%@ page language="java" contentType="text/html; charset=GBK"
        pageEncoding="GBK"%>
    <%@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=GBK">
    <title><s:text name="loginPage"/></title>
    </head>
    <body>
        <s:form action="login">
            <s:textfield name="username" key="user"/>
            <s:textfield name="password" key="pass"/>
            <s:submit key="login"/>
        </s:form>
    </body>
    </html>

    登录成功界面welcome.jsp

    <%@ page language="java" contentType="text/html; charset=GBK"
        pageEncoding="GBK"%>
    <%@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=GBK">
    <title><s:text name="succPage"/></title>
    </head>
    <body>
        <s:text name="succTip">
            <s:param>${sessionScope.user }</s:param>
        </s:text><br/>
    </body>
    </html>

    登录失败界面error.jsp

    <%@ page language="java" contentType="text/html; charset=GBK"
        pageEncoding="GBK"%>
    <%@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=GBK">
    <title><s:text name="errorPage"/></title>
    </head>
    <body>
        <s:text name="failTip"/>
    </body>
    </html>

    当login.jsp出发action时,就会转向后台发送login.action的请求,这个请求被后台拦截,交给struts.xml中配置的action处理

    <?xml version="1.0" encoding="GBK" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    
    
    <struts>
    
        <constant name="struts.enable.DynamicMethodInvocation" value="false" />
        <constant name="struts.devMode" value="true" />
        <!-- 指定全局国际化资源文件 -->
        <constant name="struts.custom.i18n.resources" value="mess"/>
        <!-- 指定国际化编码使用的字符集 -->
        <constant name="struts.i18n.encoding" value="GBK"/>
        
        <package name="test" extends="struts-default">
            <action name="login" class="com.test.action.LoginAction">
                <result name="error">/error.jsp</result>
                <result name="success">/welcome.jsp</result>
            </action>
        </package>
    </struts>

    下面是LoginAction的代码,可以看到成功登陆后,程序吧username写入session中,以便于我们在welcome.jsp中利用${sessionScope.user}取得名字

    package com.test.action;
    
    import com.opensymphony.xwork2.ActionContext;
    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(){
            if(getUsername().equals("xingguo")&&getPassword().equals("123")){
                ActionContext.getContext().getSession().put("user", getUsername());
                return SUCCESS;
            }else{
                return ERROR;
            }
        }
    
    }

    还要两个国际化文件

    mess.properties

    loginPage=loginPage
    errorPage=errorPage
    succPage=succPage
    failTip=sorry,login failed
    succTip=welcome{0},login success
    user=username
    pass=password
    login=login

    mess_zh_CN.properties

    loginPage=登陆界面
    errorPage=失败界面
    succPage=成功界面
    failTip=对不起,您不能登录!
    succTip=欢迎,{0},您已经登录!
    user=用户名
    pass=密 码
    login=登陆

     

  • 相关阅读:
    Git Revert用法
    C语言------数据输入、输出函数
    C语言------运算符和表达式
    jsp九大内置对象
    三层结构下的多表查询,实体类写法
    String类型中"=="和"equals"的区别
    创建对象数组,给数组赋值(两种理解思路)
    Vbs整人代码
    设计模式之单例
    事务
  • 原文地址:https://www.cnblogs.com/LoganChen/p/6785298.html
Copyright © 2020-2023  润新知