zoukankan      html  css  js  c++  java
  • 【java开发系列】—— struts2简单入门示例

    前言

      最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的。

      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展现数据

      

      下面我们看下,需要的jar包

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

      freemarker提供了另一种展现方式

      ognl提供了OGNL表达式

      struts2-core提供struts2核心包

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

      我们提供了三个jsp

    登陆界面login.jsp

    复制代码
     1 <%@ page language="java" contentType="text/html; charset=GBK"
     2     pageEncoding="GBK"%>
     3 <%@taglib prefix="s" uri="/struts-tags"%>
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=GBK">
     7 <title><s:text name="loginPage"/></title>
     8 </head>
     9 <body>
    10 <s:form action="login">
    11     <s:textfield name="username" key="user"/>
    12     <s:textfield name="password" key="pass"/>
    13     <s:submit key="login"/>
    14 </s:form>
    15 </body>
    16 </html>
    复制代码

    登陆成功界面welcome.jsp

    复制代码
    <%@ page language="java" contentType="text/html; charset=GBK"
        pageEncoding="GBK"%>
    <%@taglib prefix="s" uri="/struts-tags"%>
    <html>
    <head>
        <title><s:text name="succPage"/></title>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
    </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"%>
    <html>
    <head>
        <title><s:text name="errorPage"/></title>
        <meta http-equiv="Content-Type" content="text/html; charset=GBK">
    </head>
    <body>
        <s:text name="failTip"/>
    </body>
    </html>
    复制代码

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

    复制代码
     1 <?xml version="1.0" encoding="GBK"?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
     4     "http://struts.apache.org/dtds/struts-2.1.7.dtd">
     5 <struts>
     6     <!-- 指定全局国际化资源文件 -->
     7     <constant name="struts.custom.i18n.resources" value="mess"/>
     8     <!-- 指定国际化编码所使用的字符集 -->    
     9     <constant name="struts.i18n.encoding" value="GBK"/>
    10     <!-- 所有的Action定义都应该放在package下 -->
    11     <package name="test" extends="struts-default">
    12         <action name="login" class="com.test.action.LoginAction">
    13             <result name="error">/error.jsp</result>
    14             <result name="success">/welcome.jsp</result>
    15         </action>
    16     </package>
    17 </struts>
    复制代码

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

    复制代码
     1 package com.test.action;
     2 
     3 import com.opensymphony.xwork2.ActionContext;
     4 import com.opensymphony.xwork2.ActionSupport;
     5 
     6 public class LoginAction extends ActionSupport {
     7     private String username;
     8     private String password;
     9 
    10     public String getUsername() {
    11         return username;
    12     }
    13 
    14     public void setUsername(String username) {
    15         this.username = username;
    16     }
    17 
    18     public String getPassword() {
    19         return password;
    20     }
    21 
    22     public void setPassword(String password) {
    23         this.password = password;
    24     }
    25 
    26     public String execute() throws Exception {
    27         if (getUsername().equals("xingoo") && getPassword().equals("123")) {
    28             ActionContext.getContext().getSession().put("user", getUsername());
    29             return SUCCESS;
    30         }else{
    31             return ERROR;
    32         }
    33     }
    34 }
    复制代码

      这里还要两个国际化文件,

      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=登陆
    复制代码

      登陆界面

      登陆成功

      登陆失败

    from: http://www.cnblogs.com/xing901022/p/3961661.html

  • 相关阅读:
    ASP.NET 表单验证 Part.1(理解表单验证)
    Silverlight 简介 Part.3(设计 Siverlight 页面)
    ASP.NET 成员资格 Part.3(LoginStatus、LoginView、PasswordRecovery)
    ASP.NET 网站部署 Part.1(安装IIS、复制文件部署网站)
    ASP.NET Dynamic Data Part.1(创建动态数据应用程序)
    ASP.NET 安全模型 Part.2(SSL)
    ASP.NET MVC Part.2(扩展基本的 MVC 应用程序)
    ASP.NET 网站部署 Part.2(使用 Web 部署)
    开发高级 Web 部件
    创建 Web 部件(WebPart 类、简单的 Web 部件)
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/5746822.html
Copyright © 2011-2022 走看看