• struts开发


    今天把struts1.3.8(建议下载struts-1.3.8-all)下载了下来,调试了网上很常见的一个登陆程序,感觉和昨天看的jsp2.0有很多相似之处。
    这是我关于这个例子的流程或结构图:

    struts-config.xml控制着整个流程的流转
    AdminLoginForm负责数据的保存和传递
    AdminLoginAction负责业务逻辑的处理

    现在把测试的过程列出来:
    1、程序运行环境:
    Tomcat5.5.25
    Oracle10g
    struts1.3.8
    2、数据准备:
    建立数据库:testperson,用于存储登陆用到的用户名、密码

    1. create table testperson(
    2. name char(20),
    3. password char(20)
    4. );
    5. insert into testperson values('admin','admin')

    3、在Tomcat中新建一个虚拟目录:
    在%TOMCAT_HOME%\conf\Catalina\localhost目录下新建一个文件:strutstest.xml
    文件内容:

    1. <context path="/strutstest" docBase="d:/jsp/struts138" reloadable="true" crossContext="true" debug="0"></context>

    这样就创建了一个虚拟目录
    path为浏览器中的访问路径,应该与文件名保持一致
    docBase为你的文件存放的位置
    4、添加所需要的.jar包:
    在d:/jsp/struts138目录下创建如下目录结构:
    –WEB-INF
      |
      |—lib
      |—classes
    将下载到的struts中lib目录下的全部文件拷贝到此lib目录下
    将下载到的struts中src\taglib\src\main\resources\META-INF\tld目录下的全部.tld文件拷贝到WEB-INF目录下
    5、创建配置文件:
    (1)web.xml
    这是一个基本的配置,文件保存位置:WEB-INF\
    关于每个配置节都起什么作用,网上可以找到详细说明,此处不再详述。

    1. <?xml version="1.0" encoding="ISO-8859-1"?>
    2.   <!DOCTYPE web-app PUBLIC
    3.     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    4.     "http://java.sun.com/dtd/web-app_2_3.dtd">
    5.  
    6. <web-app>
    7.   <display-name>Struts Blank Application</display-name>
    8.  
    9.   <servlet>
    10.     <servlet-name>action</servlet-name>
    11.     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    12.     <init-param>
    13.       <param-name>config</param-name>
    14.       <param-value>/WEB-INF/struts-config.xml</param-value>
    15.     </init-param>
    16.     <load-on-startup>2</load-on-startup>
    17.  </servlet>
    18.  
    19.   <servlet-mapping>
    20.     <servlet-name>action</servlet-name>
    21.     <url-pattern>*.do</url-pattern>
    22.   </servlet-mapping>
    23.  
    24.   <welcome-file-list>
    25.     <welcome-file>index.jsp</welcome-file>
    26.   </welcome-file-list>
    27.  
    28.   <taglib>
    29.     <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    30.     <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    31.   </taglib>
    32.  
    33. </web-app>

    (2)struts-config.xml
    这是一个struts的配置,文件保存位置:WEB-INF\
    关于每个配置节都起什么作用,网上可以找到详细说明,此处不再详述。

    1. <?xml version="1.0" encoding="UTF-8"?> 
    2. <struts-config>
    3.  
    4. <form-beans> 
    5. <form-bean name="adminLoginForm" type="AdminLoginForm" /> 
    6. </form-beans> 
    7.  
    8. <global-forwards> 
    9. <forward name="ToUserList" path="/userlist.jsp" /> 
    10. <forward name="ToErrorPage" path="/error.jsp" /> 
    11. </global-forwards> 
    12.  
    13. <action-mappings> 
    14. <action path="/adminlogin" type="AdminLoginAction" name="adminLoginForm" scope="request" />
    15. </action-mappings>
    16.  
    17. <message-resources parameter="ApplicationResources" />
    18.  
    19. </struts-config>

    6、创建jsp文件:
    (1)adminlogin.jsp
    登陆窗体,其中用到了tag标签,我们在web.xml中作了配置,同时在这里引用

    1. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

    同时文件中form的action指向我们在struts-config中作了配置

    1. <%@ page contentType="text/html;charset=GBK" language="java"%>
    2. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    3. <html> 
    4. <head>
    5. <title>JSP for loginForm form</title>
    6. </head>
    7. <body>
    8. <html:form action="adminlogin.do" >
    9.   <table> 
    10.     <tr> 
    11.       <td > 用户名 </td> 
    12.       <td > <html:text property="username" /> </td> 
    13.     </tr> 
    14.     <tr> 
    15.       <td > 密码</td> 
    16.       <td > <html:password property="password" />  </td> 
    17.     </tr> 
    18.     <tr> 
    19.       <td ><html:submit property="submit">登录</html:submit></td> 
    20.       <td ><html:reset>  重置</html:reset> </td> 
    21.     </tr> 
    22.   </table> 
    23. </html:form>
    24. </body>
    25. </html>

    (2)error.jsp

    1. <%@ page contentType="text/html;charset=GBK" language="java"%>
    2. <html>
    3. <head><title>登陆失败</title></head>
    4. <body>
    5. 登陆失败
    6. <html:errors />
    7. </body>
    8. </html>

    (3)userlist.jsp

    1. <%@ page contentType="text/html;charset=GBK" language="java"%>
    2. <html>
    3. <head><title>登陆成功</title></head>
    4. <body>登陆成功</body>
    5. </html>

    7、Java类
    (1)AdminLoginForm.java
    用于数据的保存和传递

    1. import org.apache.struts.action.ActionForm;
    2.  
    3. public class AdminLoginForm extends ActionForm {
    4.     /**
    5.      *
    6.      */
    7.     private static final long serialVersionUID = 8189906596424257682L;
    8.  
    9.     private String username = null;
    10.  
    11.     private String password = null;
    12.  
    13.     public AdminLoginForm() {
    14.     }
    15.  
    16.     public void setUsername(String username) {
    17.         this.username = username;
    18.     }
    19.  
    20.     public String getUsername() {
    21.         return username;
    22.     }
    23.  
    24.     public void setPassword(String password) {
    25.         this.password = password;
    26.     }
    27.  
    28.     public String getPassword() {
    29.         return password;
    30.     }
    31. }

    (2)AdminLoginAction.java
    用于登陆验证

    1. import java.sql.Connection;
    2. import java.sql.ResultSet;
    3. import java.sql.Statement;
    4.  
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import org.apache.struts.action.Action;
    8. import org.apache.struts.action.ActionForm;
    9. import org.apache.struts.action.ActionForward;
    10. import org.apache.struts.action.ActionMapping;
    11. import org.apache.struts.action.ActionMessage;
    12. import org.apache.struts.action.ActionMessages;
    13.  
    14. public final class AdminLoginAction extends Action { 
    15.     public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception { 
    16. //获取来自AdminLoginForm对象的数据。
    17.        AdminLoginForm adminLoginForm = (AdminLoginForm) form;
    18.        String username = adminLoginForm.getUsername();
    19.        String password = adminLoginForm.getPassword();
    20.        ActionMessages errors = new ActionMessages();
    21.       
    22.        String PageForward = "ToErrorPage";
    23. //只有用户名与密码相匹配,而且用户身份为管理员时才能进入系统
    24. //设置转发页面,struts-config. xml中<forward path="/"项目路径/userlist.jsp" />定义。
    25.      
    26.     Connection conn = DataBaseConn.getConn();
    27.     // Create a Statement
    28.     Statement stmt = conn.createStatement ();
    29.  
    30.     ResultSet rset = stmt.executeQuery ("select * from testperson where name='"+username+"' and password = '"+password+"'");
    31.       if(rset.next()){
    32.          PageForward = "ToUserList";
    33.        } else { 
    34.              errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage( "error.admin.accessDeny")); //error.admin.accessDeny定义在ApplicationResource.properties
    35.              if (!errors.isEmpty()){ 
    36.                 saveErrors(request, errors);
    37.               }
    38.        } 
    39.          conn.close();
    40.          return mapping.findForward(PageForward);
    41.        } 
    42. }

    (3)DataBaseConn.java
    返回一个数据连接对象

    1. import java.sql.*;
    2.  
    3. public class DataBaseConn
    4. {
    5. public static Connection getConn() throws SQLException{
    6.     String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";//连接url
    7.     String userName = "user";//用户名
    8.     String password = "pass";//密码
    9.  
    10.     DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
    11.     Connection conn = DriverManager.getConnection (url, userName, password);
    12.     return conn;
    13. }
    14. }

    (4)ApplicationResource.properties
    属性文件,登陆失败时的错误记录信息

    1. error.admin.accessDeny=密码错误!

    好了,这就是全部了!
    初学,理解难免有偏差,欢迎大家就Struts方面的问题与我交流!

  • 相关阅读:
    信息的封装和隐藏
    力扣 20. 有效的括号
    servlet执行原理
    当请求一个Servlet时,后台如何运作?
    req.getAttribute 和 req.getParameter
    Servlet 实现登录页面,并在条件下跳转
    request.getRequestDispatcher(a.jsp).forward(request,response)和response.sendRedirect的差别
    通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性,并检查 SQL Server 的实例正在
    Cocos2d-x 3.0 精灵帧缓存(SpriteFrameCache)
    lua 中处理cocos2dx 的button 事件
  • 原文地址:https://www.cnblogs.com/buffer/p/1613242.html
Copyright © 2020-2023  润新知