zoukankan      html  css  js  c++  java
  • 用Struts2搭建一个登录例子【本人亲测好用】

    今天尝试struts2的搭建,遇到不少的问题,终于一一解决,逛了很多地方,最终完成搭建

    1、首先要下载struts2的一些组件,我下载的是版本2.3.4.1,Eclipse是4.6版本的。由于版本的不断升级,导致在搭建的过程中,和过去相对较旧的版本搭建有了一些差别,不过问题不是很大。工程截图如下:

    2、解压下载的组件,在lib目录下找到其中的以下组件:

    commons-fileupload-1.2.2.jar

    commons-io-2.2.jar

    commons-lang3-3.2.jar

    commons-logging-1.1.1.jar

    freemarker-2.3.19.jar

    javassist-3.11.0.GA.jar(一定要将这个jar复制过去,这是和以前的版本不同的地方)

    ognl-3.0.5.jar

    struts2-core-2.3.4.1.jar

    xwork-core-2.3.4.1.jar

    将这些组件复制到建立的web工程下的WEB-INF/lib目录中,这些组件其实就是编译好的类文件。

    3、接下来就是配置struts.xml文件。这个文件就好像起着一个过滤器的作用,用户发来的请求要经过该文件的过滤,根据用户请求中所请求的处理类型,来选择相应的处理逻辑。

    以下是一个struts.xml文件的例子:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">  
     3  
     4 <struts>  
     5       <include file="struts-default.xml" />  
     6       <package name="struts" extends="struts-default"><!--注意 namespace="/demo"写,那么login.jsp中的form标签的action属性中必须写-->  
     7           <action name="login" class="com.sid.action.Login" method="execute">
     8               <result name="success">/success.jsp</result>
     9               <result name="fail">/fail.jsp</result> 
    10           </action>
    11       </package>
    12 </struts>  

    在struts.xml中,是采用package来管理各种action的。

    package标签中的namespace指定了该包的命名空间。

    extends是说当前这个包继承自struts-default包,可以在struts2-core-2.2.3.1.jar中的struts-default.xml文件中找到这个包,这个包被定义成抽象的,它不能包含有action。

    包中的每一个action标签都和一个逻辑处理类进行了映射,name指定了这个action的名字,和包的namespace组合起来,可以直接访问这个逻辑处理类。

    class指定了逻辑处理类的位置,method指定了进行逻辑处理类中进行逻辑处理的方法,这个execute很重要,而且它有固定的返回类型,就是String。

    result标签就是根据逻辑判断之后,execute方法返回的字符串,根据返回的字符串,来进入到指定的页面。这里一定要把跳转的地址写清楚,明白。否则浏览器会报404的错误。

    4、根据struts.xml的配置,我们需要建立两个jsp文件:success.jsp和fail.jsp,还有一个Login类,以及一个登录页面的login.jsp文件。

    在WebRoot目录下,建立login.jsp文件:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>Insert title here</title>
     9 </head>
    10 <body>
    11     <form  action="login" method="post">
    12     账号:<input type="text" name="username"/><br />
    13     密码:<input type="password" name="password"/><br />
    14     <input type="submit" value="登录"/>
    15     </form>
    16 </body>
    17 </html>

    在src目录下,写Login类:

     1 package com.sid.action;
     2 import com.opensymphony.xwork2.ActionSupport;
     3 public class Login extends ActionSupport {
     4 
     5     private static final long serialVersionUID = 1L;
     6     private String username;
     7     private String password;
     8      public String execute()  
     9         {  
    10             if("admin".equals(this.username) && "123456".equals(this.password))  
    11                 return "success";  
    12             else  
    13                 return "fail";  
    14         }  
    15     public String getUsername() {
    16         return username;
    17     }
    18     public void setUsername(String username) {
    19         this.username = username;
    20     }
    21     public String getPassword() {
    22         return password;
    23     }
    24     public void setPassword(String password) {
    25         this.password = password;
    26     }    
    27 }

    由于success.jsp和fail.jsp页面并不想让用户直接访问到,而是通过登录页面,做个简单的逻辑判断之后,在根据判断结果跳转到相应的页面。

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10     ====>登录成功!<br />
    11     账号:${request.username}<br />
    12     密码:${request.password}
    13 </body>
    14 </html>
     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10 ---->登录失败!
    11 </body>
    12 </html>

    5、配置web.xml文件,这也是很关键的一步,在启动服务器时,服务器要根据这个文件去进行初始化。而struts2和struts1启动有很大的不同,它是通过过滤器来启动的,而struts1是通过加载servlet来启动的,故应向web.xml中加入如下内容:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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">
     3   <display-name>Struts2</display-name>
     4 <!--配置sturts2启动代码 -->
     5 <filter>  
     6    <filter-name>struts2</filter-name>   
     7    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class><!-- 注意在2.1.3以上版本需使用此class -->  
     8 </filter>  
     9 <filter-mapping><!-- 配置url路径 -->  
    10     <filter-name>struts2</filter-name>  
    11     <url-pattern>/*</url-pattern>  
    12 </filter-mapping>
    13       
    14   <welcome-file-list>  
    15     <welcome-file>index.jsp</welcome-file>
    16     <welcome-file>default.jsp</welcome-file>
    17   </welcome-file-list>
    18 </web-app>

    经过这几步后,启动你的服务器,在地址栏输入登录界面的地址,一个简单的struts2框架就搭建好了……

    如果出现404等错误请查看你的login.jsp的form标签的action属性的路径是否写对且与struts.xml的namespace属性同步,要么都不写,要么都写上。


  • 相关阅读:
    9
    8
    7
    lua开发和调试环境
    MeshFilter mesh vs sharedMesh
    几种方法验证unity是否为development build
    Unity SetActive Event
    利用Data Vault对数据仓库进行建模(二)
    程序员如何圆飞行梦想(一)
    利用Data vault对数据仓库建模
  • 原文地址:https://www.cnblogs.com/lusid/p/5726670.html
Copyright © 2011-2022 走看看