struts登陆
来源:互联网 发布:淘宝哪些店卖正品万斯 编辑:程序博客网 时间:2024/04/29 17:57
struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。关于Struts的相关介绍在这里就不太多介绍了。在本网站上相关内容特别多。本文只给出Struts的工作原理图。希望能够帮助大家更好的理解Struts的开发原理和结构流程。
本文主要介绍应用Struts,编写登陆的全过程,其中验证表单的格式包括ActionForm验证、ValidatorForm验证和DynaActionForm三种方式实现。为了方便大家学习,本文以图形的形式一步一步的展现在大学面前,一些重点的部分,或是一些Struts新的知识例如Struts专有的标签都用红框或是红色的字体加以标记、注释。所以在阅读本之前,只要求有一定的JAVA基础,对Struts架构有一些初步了解。就可以完成下列操作。
好了。。。我们开始吧。Good Luck !
准备工作
Eclipse 3.1
Myeclipse4.0
Tomcat 5.5
Struts1.1
Jaka_comm
mysql驱动包
首先建一个项目,这里我们用myEclipse中的Web项目,你也可以直接建一个Tomcat项目。
Eclipse开发Struts的插件很多。不同的插件建的项目可能不太一样,但工作原理都是一样,对于其它的插件这里就不太多述了。新建一个Web项目会弹出如下对话框(如图1.1):
这里我们只需填写Project Name项就可以了,这里我以StrutsLogin命名。为项目起个名字。Location是指项目所在的路径。Source folder指类原文件放的位置。Web root folder指页面文件所在的位置。这两个名字都可以根据情况改写。Context root URL指上下文的路径。默认就可以了。直接点击Finish一个Web项目就建完了。然后到硬盘中找到你的项目。你会发现项目下有两个文件夹Src和WebRoot。Src下是空的因为我们还没有建类。WebRoot下有两个文件夹META_INF和WEB_INF。WEB_INF有两个文件夹classes和lib分别放项目编译好的类文件和项中所需要的包。WEB_INF文件夹里的内容也是我们要打包发布到服务器上的文件。
接下来使我们建好的Web项目具有开发Struts的能力,点该项目中点击右健→myeclipse→
Add Struts capabilities会弹出如是对话框,如图(1.2)
这里我们选择1.1版本其它的默认就可以了。
选中Install Struts jars会将Struts常用的包加入项目中。但只是一些基本的包,远远满足不了我们的开发,接下我们把下载jaka-comms下的所以点jar全部拷贝到项目的lib下,这里我们将Mysql的连接所需的包一并拷贝过去。然后到ecipse环境中刷新该项目。注意:刷新这步必须得做,要不然即使jar拷贝到lib中也不是好用的。
准备工作就OK了。
第一步:建一个jsp页面命名为login.jsp代码如下:
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<html:html locale="true">
<head>
<html:base />
<title>login.jsp</title>
</head>
<body>
<html:form action="login" method="post">
<bean:message key="label.user"/>:<html:text property="username"/><br>
<bean:message key="label.password"/>:<html:password property="password"/><br>
<html:submit property="login"/><html:reset/>
</html:form>
<font color="red"><html:errors/></font>
</body>
</html:html>
下面对以上代码主要详细介绍一下:下面所的html标签是struts的标签,其用法和html标签很像.主要用于显示表单元素和输入控件,显示错误信息,显示其他HTML元素.Bean标签也是struts专有的标签.创建和复制bean的标记,脚本变量定义标记,bean翻译标记,消息国际化标记.这里的<bean:message>国标化标签,里面的key值在applicationResource.properties里指定.<html:errors>用于显示错误信息的标记.
applicationResource.properties配置代码如下:
label.user=username
label.password=password
error.password.length=<li>password must longer than 4.<br>
error.username.length=<li>Username must longer than 4.<br>
error.required=<li>{0} is required.<br>
error.user=user is not exist!
error.pwd=password is wrong!
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {2} characters.
第二步:用向导建一个Form.用于封装表的内容.以及格式验证.
New->other->myeclipse->web struts->struts1.1->struts1.1 form弹出如下对话框.
这里我们填入Use case为login.Superclass选择ActionForm.
并加入两个Properties.Username,password.注意:这里的两个属性必须和login.jsp表单里两个标签的properties相同,否则数据封装不过来.完成后LoginForm类生成的代码除了Username,password,和对就应的set,get方法以外还有两个重要的方法一个是ActionErrors用于表单的格式验证.一个就是reset用于恢复到默认值.在封装表单前调用.(即set方法之前).代码如下:
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if(this.username==null || this.username.length()<1){
ActionMessage error = new ActionMessage("error.required","username");
errors.add("user",error);
}
if(this.username.length()<4){
errors.add("userLength",new ActionMessage("error.username.length"));
}
if(this.password==null || this.password.length()<1){
ActionMessage error = new ActionMessage("error.required","password");
errors.add("password",error);
}
if(this.password.length()<4){
errors.add("passwordLength",new ActionMessage("error.password.length"));
}
return errors;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
this.username=null;
this.password=null;
}
注:struts提供了两个类来处理错误:ActionErrors和ActionError,它们都扩展org.apache.struts.action.ActionErrors保存着ActionError对象的集合,其中每一个代表了独立的错误信息。每个ActionError都包含了关键字,能够映射到资源文件中存储的错误信息.
第三步:用向导建一个Action.用于逻辑控制.
New->other->myeclipse->web struts->struts1.1->struts1.1 action弹出如下对话框.(参数如图所示)
注:在action中execute方法是在提交时自动被执行的.代码如下:这里的主要功能:⑴得到连接池中的连接.⑵进行数据库的逻辑验证.⑶页面的跳转.
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
LoginForm loginForm = (LoginForm) form;
String username=loginForm.getUsername();
String password=loginForm.getPassword();
ActionForward forward=null;
Connection conn = this.getDataSource(request,"dataSource").getConnection();
LoginBean loginBean=new LoginBean();
String result=loginBean.verify(conn,username,password);
if("OK".equals(result)){
forward=mapping.findForward("main");
}else if("NOUSER".equals(result)){
forward=mapping.getInputForward();
ActionMessages errors = new ActionErrors();
ActionMessage error = new ActionMessage("error.user");
errors.add("nouser", error);
this.saveErrors(request, errors);
}else{
forward=mapping.getInputForward();
ActionMessages errors = new ActionErrors();
ActionMessage error = new ActionMessage("error.pwd");
errors.add("pwd", error);
this.saveErrors(request, errors);
}
return forward;
}
第四步:创建一个类命名为LoginBean.用于对数据库的操作.这里用于验证用户名和密码.代码如下:
package com.yourcompany.struts.bean;
import java.sql.*;
/**
* @author 刘元喜
* @version1.0
*/
public class LoginBean {
/**
* 根据Action中传过来的用户和密码进行验证。
* 如果用户名不存在,则返回noUser.
* 如果用户名存在,但密码错误则返加pwd.
* 正确则OK.
* @param conn Action中传过来的Connection
* @param username
* @param password
* @return
*/
public String verify(Connection conn,String username,String password){
String result=null;
Statement state=null;
ResultSet rs=null;
try {
state=conn.createStatement();
rs=state.executeQuery("select password from login where username='"+username+"'");
if(rs.next()){
if(password.equals(rs.getString(1))){
result="OK";
}else{
result="PWD";
}
}else{
result="NOUSER";
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}
第五步:到这里,基本的功能就已经实现了.我们来部署测试一下吧.什么也不填会出现如果结果.
用户名正确密码不正确的情况:(如图)
用户不存在的情况:(如图)
下面给出struts-config.xml文件的代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<data-sources>
<data-source key="dataSource" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="com.mysql.jdbc.Driver" />
<set-property property="url" value="jdbc:mysql://127.0.0.1:3306/test" />
<set-property property="username" value="root" />
<set-property property="password" value="" />
<set-property property="minCount" value="2" />
<set-property property="maxCount" value="5" />
</data-source>
</data-sources>
<form-beans >
<form-bean name="loginForm" type="com.yourcompany.struts.form.LoginForm" />
<form-bean name="validateForm" type="com.yourcompany.struts.form.ValidateForm" />
<form-bean name="dynaLoginActionForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String" />
<form-property name="pwd" type="java.lang.String" />
</form-bean>
</form-beans>
<global-exceptions />
<global-forwards >
<forward name="main" path="/main.jsp"/>
</global-forwards>
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.yourcompany.struts.action.LoginAction"
validate="true"/>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
</struts-config>
注:<data-sources>为数据库连接池的配置.
<form-beans >form的配置.这里我们用了三个form,ActionForm, ValidateForm, DynaActionForm.这里的ValidateForm创建方法和ActionForm是一样的就不在多述了.DynaActionForm是一个动态的Form,没有类的存在,直接在这里配置一下就可以了.
<global-forwards >全局的forward.用于页面跳转.
<action-mappings >action配置.
<message-resources>指定资源文件所在的位置.
<plug-in>插件所在的位置,这里我们用的验证的插件.注意必须放到<message-resources>下边.
- struts登陆
- Struts登陆
- struts登陆
- struts登陆
- Struts 登陆
- Struts+Hibernte登陆范例
- 登陆程序struts+hibernate
- struts实现登陆界面
- struts中的cookie登陆
- struts入门:struts实现用户登陆
- struts标签返回登陆错误信息
- struts简单登陆跟删除
- Struts自动登陆复选框
- 一个简单的struts登陆
- struts实战--登陆拦截器
- struts-入门 登陆 maven 构建
- Struts 注册、登陆、email实例解析
- Struts登陆进不了action的解决办法
- STL中的Vector用法示例
- 七秘诀工作效率与薪水翻番
- 集中精力,下定决心,永不放弃
- 谈谈web
- 年轻没有失败,看驴生豪迈,不过重头再来。
- struts登陆
- 关于DLL和EXE共享静态类对象
- 编程太久了,心情也越烦躁,会不会因此而失去了很多。。。? 同感的必看,潜藏人生的哲理
- 想说说实模式的内存地址映射的问题
- JBI规范1.0[3]——概述
- JBI规范1.0[4]——系统架构
- 瑞泰人寿上海分公司应松:投连险适合长期理财
- 关于字符串的总结
- 似水流年