zoukankan      html  css  js  c++  java
  • 【SSH三框架】Struts2第一章的基础:第一次写Struts2规划

    今年八月,当已经SSH三架完成学业。然后,他感动Android开展。三个框架已经很长的时间做无用的东西。所以,如果你想花三四天的时间来复习一下,写在博客。

    附带SSH整个jar包网盘下载:http://pan.baidu.com/s/1hqf5ta8


    首先,我们新创建一个web项目,然后引入jar包:commons-fileupload。commons-io。freemarker,javassist。ognl。struts2-core,xwork-core。

    这里不过个简单的struts程序。所以只引入了这些jar包


    接下来,我们就是配置web.xml的内容了,web.xml:

    <?xml version="1.0" encoding="GBK"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    
    	<!-- 定义Struts2的核心Filter -->
    	<filter>
    		<filter-name>struts2</filter-name>
    		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    	</filter>
    	<!-- 让Struts2的核心Filter拦截全部请求 -->
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    </web-app>
    这里边是定义了一个Struts2的核心拦截器,Struts2的核心就是环绕拦截器而生的


    然后。我们写一个登陆的页面: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>
    这里用到了struts2的标签库。在以后会做介绍


    在login.jsp我们为form表单定义了一个action,是在点击login之后跳转的作用。在学servlet的时候应该都用过。

    这个action我们能够在struts.xml中定义。这个struts.xml我们通常是放在src文件夹下边。也能够变化(只是也要改变对应的路径)

    struts.xml:

    <?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    	"http://struts.apache.org/dtds/struts-2.1.7.dtd">
    <!-- 指定Struts 2配置文件的根元素 -->
    <struts>
    	<!-- 指定全局国际化资源文件 -->
    	<constant name="struts.custom.i18n.resources" value="mess"/>
    	<!-- 指定国际化编码所使用的字符集 -->	
    	<constant name="struts.i18n.encoding" value="GBK"/>
    	<!-- 全部的Action定义都应该放在package下 -->
    	<package name="lee" extends="struts-default">
    		<action name="login" class="org.crazyit.app.action.LoginAction">
    			<!-- 定义三个逻辑视图和物理资源之间的映射 -->		
    			<result name="input">/login.jsp</result>
    			<result name="error">/error.jsp</result>
    			<result name="success">/welcome.jsp</result>
    		</action>
    	</package>
    </struts>
    这里其他的东西不用管,我们看下<package></package>标签中的内容,这里边定义了一个action,设置name属性为“login”,class属性为:LoginAction

    然后下边是三个result,分别有各自的name属性。

    这个struts.xml的作用就是:当页面发来请求。由struts.xml处理,跳转到对应的java处理程序,然后通过java处理程序跳转到对应的result页面


    然后,我们看LoginAction.java:

    package org.crazyit.app.action;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class LoginAction extends ActionSupport
    {
    	//定义封装请求參数的username和password属性
    	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;
    	}
    	//定义处理用户请求的execute方法
    	public String execute() throws Exception
    	{
    		//当username为crazyit.org。password为leegang时即登录成功
    		if (getUsername().equals("crazyit.org")
    			&& getPassword().equals("leegang") )
    		{
    			ActionContext.getContext().getSession()
    				.put("user" , getUsername());
    			return SUCCESS;
    		}
    		else
    		{
    			return ERROR;
    		}
    	}
    }
    在LoginAction.java中我们定义了两个属性:username和password,而且定义了一个execute()方法,这种方法是默认的sruts处理方法

    在这个execute方法中,我们定义了一个处理的逻辑,

    这个逻辑规定username和password等于XXX的时候,利用ActionContext.getContext().getSession().put()函数,加入一个属性user。内容为:getUsername()。

    而且。return SUCCESS。

    这里的SUCCESS相应的就是struts.xml中的<result name="success">/welcome.jsp</result>


    PS:须要注意的一点。我们能够return不论什么的一个字符串,仅仅要在struts.xml中有与其相应的result就可以。

    这里是由于继承了ActionSuppot,所以SUCCESS没有加上双引號,由于SUCCESS在ActionSuppot中默觉得“success"字符串。


    然后,我们运行:http://localhost:8080/Struts2Demo/login.jsp就能够运行相关的操作了




    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    F2etest v2.0.0 正式发布 ,阿里巴巴开源测试方案
    Spring-Wind 1.1.1 发布,SSM 架构核心库
    通过nginx配置文件抵御攻击 | WooYun知识库
    阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。
    openresty+lua在反向代理服务中的玩法 | WooYun知识库
    java~lambda表达式让查询更优雅
    java~日期与字符串的转化
    java~google样式检查和命名规范
    springboot~Mongodb的集成与使用
    springboot~JPA把ORM统一起来
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4869414.html
Copyright © 2011-2022 走看看