注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

韬光养晦

路漫漫其修远兮,吾将上下而求索

 
 
 

日志

 
 

Begin struts 1.0  

2008-05-14 21:01:18|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

今天仅仅接触到struts皮毛,要继续学习。把这个验证程序记录如下:

(myeclipse+tomcat5.5+hibernate3.2+struts1.3.8)

1. myeclipse 新建一个web project.这里取名SHShow。

2. 导入hibernate的jar文件和struts的jar文件以及标签文件tld。

若struts/lib下tld文件,则导入到项目的WEB-INF/lib下,此时应在web.xml文件中进行声明:

<taglib>

     <taglib-uri>/tags/struts-bean</taglib-uri>

     <taglib-location>/WEB-INF/struts-html.tld</taglib-location>

</taglib>

<taglib>

     <taglib-uri>/tags/struts-html</taglib-uri>

     <taglib-location>/WEB-INF/struts-html.tld</taglib-location>

</taglib>

<taglib>

     <taglib-uri>/tags/struts-logic</taglib-uri>

     <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>

</taglib>

<taglib>

     <taglib-uri>/tags/struts-nested</taglib-uri>

     <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>

</taglib>

并在jsp页面中声明类似如下:

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

没有则操作类似如下:

struts1.3.8的tld文件在struts-taglib-1.3.8.jar中,只需要在jsp页面中声明类似如下即可:

<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<%@ taglib prefix="nested" uri="http://struts.apache.org/tags-nested" %>

或者将struts-taglib-1.3.8.jar中的tld复制到WEB-INF目录下,再用第一种方法声明。

3. 修改web.xml以支持struts,修改成功后内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <!-- display-name应用于项目被访问时的url路径 -->
  <display-name>SHShow</display-name>
  <servlet>
   <!-- servlet 的名称 -->
    <servlet-name>action</servlet-name>
    <!-- servlet 的位置 -->
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <!-- servlet 启动时候的参数 -->
    <init-param>
     <!-- 定义struts的配置文件 -->
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
     <!-- 定义debug 的级别为2 -->
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
     <!-- 定义detail 的级别为2 -->
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <!-- servletv-mapping定义url后缀与servlet的关系 -->
  <servlet-mapping>
   <!-- 将以.do结尾的request交由action这个servlet处理 -->
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <!-- 初始欢迎页面 -->
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

4. 编辑login.jsp,login_success.jsp,login_failure.jsp如下:

login.jsp内容:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="nested" uri="http://struts.apache.org/tags-nested" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>登陆界面</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>
 
  <body>
 <html:form action="login.do" method="post">
  用户名:<html:text size="15" property="username" /> <br>
  密  码:<html:text size="15" property="password"/><br>
     <html:submit property="login" value="确定"/>
 </html:form>
  </body>
</html>


 

login_success.jsp内容:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="nested" uri="http://struts.apache.org/tags-nested" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'login_success.jsp' starting page</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
 
  <body>
    登陆成功 <br>
   <!--  欢迎你:<bean:write name="loginForm" property="username" />-->
  </body>
</html>


 

login_failure.jsp内容:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<%@ taglib prefix="nested" uri="http://struts.apache.org/tags-nested" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'login_success.jsp' starting page</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
 
  <body>
    登陆失败 <br>
    <a href="javascript:window.location('/SHShow/login.jsp')">重新来吧</a>
  </body>
</html>

 5. 建立Action类和ActionForm类,这里对应为LoginAction和LoginForm类。Action类用于逻辑判断和控制流,而LoginForm用于接收来自jsp页面表单的信息。

Action类(LoginAction.java)的内容如下(这里添加了利用hibernate进行验证的业务逻辑):

package com.lanvis.struts;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

//自己写的Action类必须继承Action基类,并且实现execute方法。

public class LoginAction extends Action{

 @Override
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest req, HttpServletResponse res) throws Exception {
  //得到formbean的实例
  LoginForm loginForm=(LoginForm) form;
  //从formbean中得到用户名和密码
  String username=loginForm.getUsername();
  String password=loginForm.getPassword();
  //开始利用hibernate进行用户的验证
  try {
   SessionFactory sf=new Configuration().configure().buildSessionFactory();
   Session session=sf.openSession();
   session.beginTransaction();
   String sqlQuery="select u from User u where u.username='"+username+"' and u.password='"+password+"'";
   Query query=session.createQuery(sqlQuery);
   ArrayList userList=(ArrayList) query.list();
   if(userList == null || userList.isEmpty()){

    //控制转向,利用failure字段,则会根据struts配置文件,转到login_failure.jsp页面。
    return mapping.findForward("failure");
   }
  }catch (HibernateException e) {
   e.printStackTrace();
   return mapping.findForward("failure");
  }
  return mapping.findForward("success");
 } 
}

ActionForm类(LoginForm.java)内容如下:

package com.lanvis.struts;

import org.apache.struts.action.ActionForm;

public class LoginForm extends ActionForm{
 
 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;
 }
}


6. 编写Struts-config.xml配置文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
  <form-beans >
   <!-- name 是名字 type是类的位置 -->
   <form-bean name="loginForm" type="com.lanvis.struts.LoginForm"/>
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <!-- action-mapping定义action 和 action中的跳转 -->
  <action-mappings >
   <!-- 此action名叫login,类为LoginAction 关联的formbean为loginForm,这里path="/login"对应于login.jsp中的表单提交时候的目标"login.do" -->
   <action name="loginForm" path="/login" type="com.lanvis.struts.LoginAction">
    <!-- 在此action中的跳转规则 -->
    <forward name="login" path="/login.jsp"></forward>
    <forward name="success" path="/login_success.jsp"></forward>
    <forward name="failure" path="/login_failure.jsp"></forward>
   </action>
  </action-mappings>
  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>

7. 添加hibernate支持,除了之前加入的hibernate的jar包,这里还要增加表单对应的一个User类和对应的Userv.hbm.xml映射文件在同一个包下,还要在项目的/src下添加hibernate全局配置hibernate.cfg.xml。它们的内容如下:

User类(User.java):

package com.lanvis.hibernate;

public class User {
 private String username;
 private String password;
 private int id;
 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 int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
}


User.hbm.xml内容如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping  package="com.hibernate.lanvis">
 <class name="com.lanvis.hibernate.User" table="USER">
  <id name="id" column="CID">
   <generator class="increment"/>
  </id>
  <property name="username" column="USERNAME"/>
  <property name="password" column="PASSWORD"/>
 </class>
</hibernate-mapping>

 

hibernate.cfg.xml内容如下:

<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
 <session-factory >
  <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/SH_1</property>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.connection.password">root</property>
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hibernate.show_sql">true</property>
  <mapping resource="com/lanvis/hibernate/User.hbm.xml"/>
 </session-factory>
</hibernate-configuration>

 

另外,还需要在数据库中建立一个新的表SH_1(hibernate.cfg.xml中指定的),并且手动或者通过程序建立User对应的表并插入数据。到此为止,就可以启动tomcat进行部署和运行了。这只是一个演示程序,Struts需要多加练习和思考才能学的更好。

  评论这张
 
阅读(601)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018