《转载》struts旅程《2》
上一篇我们简单了解了struts原理,学习SSH,第一部是傻瓜式学习法,人家怎么做就跟着怎么做就ok。我们以登录为例,Struts配置步骤总结如下(如图2.1):
图2.2
1、 jar包拷贝
首先是建立java web项目,之后打开我们我们下载好strtus框架,Struts-1.2.9-bin文件夹和struts-1.2.9.src源文件文件夹。在bin文件夹中的lib文件中拷贝struts的jar包,拷贝到我们自己项目struts_login
–>lib文件夹下(如图2.2)。
图2.2
2、 web.xml文件配置
找到Struts-1.2.9-bin中Struts-1.2.9-bin-->webapps下的struts实例struts-blank中的struts-1.2.9-bin\webapps\struts-blank\WEB-INF下的web.xml文件,复制配置对ActionServlet的配置,粘贴到我们的项目struts_login的WEB-INF下的web.xml中,代码如下所示。主要是对struts自带的ActionServlet进行配置。
- <servlet>
- <servlet-name>action</servlet-name>
- <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
- <init-param>
- <param-name>config</param-name>
- <param-value>/WEB-INF/struts-config.xml</param-value>
- </init-param>
- <init-param>
- <param-name>debug</param-name>
- <param-value>2</param-value>
- </init-param>
- <init-param>
- <param-name>detail</param-name>
- <param-value>2</param-value>
- </init-param>
- <load-on-startup>2</load-on-startup>
- </servlet>
- <!--Standard Action Servlet Mapping -->
- <servlet-mapping>
- <servlet-name>action</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
3、 在项目中建立自己的ActionForm
在项目中建立自己的ActionForm,继承struts框架中已经写好的ActionForm,在ActionForm设置用到的数据,并且要和我们界面上设置的名称一致。因为我们在提交表单的时候,所有的请求都会放到ActionForm中。建立登录的ActionForm,LoginActionForm.java代码如下所示。
- package com.bjpowernode.struts;
- import org.apache.struts.action.ActionForm;
- /**
- * 登录ActionForm,负责表单收集数据.
- * 表单的属性必须和ActionForm中的get和set的属性一致.
- * @author summer
- *
- */
- public classLoginActionForm extends ActionForm {
- //用户名。
- private Stringusername;
- //密码。
- private String password;
- //设置密码。
- public voidsetPassword(Stringpassword) {
- this.password = password;
- }
- //得到用户名。
- public StringgetUsername() {
- return username;
- }
- //设置用户名。
- public voidsetUsername(Stringusername) {
- this.username = username;
- }
- //得到密码。
- public StringgetPassword() {
- return password;
- }
- }
4、 建立自己的Action
建立自己的Action,同时继承struts框架中的org.apache.struts.action.Action,重载父类的execute方法。在这里完成取出表单中的数据。通过CalActionFormcalForm=
(CalActionForm)(CalActionForm)form;(struts框架中已经帮我们封装好了,我们去使用就可以了)来取得表单中的值。经过判断后,进行相应的操作,跳转到相应的页面。Action的功能是负责拿到表单数据和调用业务逻辑后进行页面跳转。建立登陆的Action类,LoginAction.java类,调用业务逻辑类UserManager的login方法。代码如下所示。
- packagecom.bjpowernode.struts;
- importjavax.servlet.http.HttpServletRequest;
- importjavax.servlet.http.HttpServletResponse;
- importorg.apache.struts.action.Action;
- importorg.apache.struts.action.ActionForm;
- importorg.apache.struts.action.ActionForward;
- importorg.apache.struts.action.ActionMapping;
- /**
- *登录Action
- *负责取得表单数据,调用业务逻辑,返回转向信息.
- *
- * @author summer
- *
- */
- public classLoginAction extendsAction {
- @Override
- public ActionForward execute(ActionMappingmapping,ActionForm form,
- HttpServletRequest request, HttpServletResponseresponse)
- throws Exception {
- LoginActionForm laf = (LoginActionForm)form;
- Stringusername = laf.getUsername();
- Stringpassword = laf.getPassword();
- UserManager userManager = newUserManager();
- //传递用户名和密码
- try
- {
- userManager.login(username, password);
- request.setAttribute("username", username);
- return mapping.findForward("success");
- }catch(UserNotFoundException e)
- {
- e.printStackTrace();
- request.setAttribute("msg","用户不能找到,用户名称=[" +username +"+]");
- }catch(PasswordErrorException e)
- {
- e.printStackTrace();
- request.setAttribute("msg","密码错误");
- }
- return mapping.findForward("error");
- }
- }
5、 建立struts-config.xml
作为Struts框架的核心描述,struts-config.xml可以说“一切尽在掌握”。它不但描述了MVC模型,定义所有视图层和控制层之间的接口(ActionForm),与控制层和模型层的接口(Action)进行结合,而且可以定义一些附加组件,如国际化信息资源排至文件,标签库信息等。
仍然是站在巨人的肩膀上,将我们下载的struts bin文件夹中的struts-config.xml文件复制到我们的项目的WEB-INF中,删除struts-config.xml中的注释部分。把Action和ActionForm配置起来。ActionForm放到<form-beans></form-beans>中,Action配置放到<action-mappings></action-mappings>中,struts-config.xml配置代码如下所示。
- <?xml version="1.0" encoding="ISO-8859-1" ?>
- <!DOCTYPE struts-config PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration1.2//EN"
- "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
- <struts-config>
- <form-beans>
- <form-bean name="loginForm" type="com.bjpowernode.struts.LoginActionForm"/>
- </form-beans>
- <action-mappings>
- <action path="/login"
- type="com.bjpowernode.struts.LoginAction"
- name="loginForm"
- scope="request"
- >
- <forward name="success" path="/login_success.jsp"/>
- <forward name="error" path="/login_error.jsp"/>
- </action>
- </action-mappings>
- </struts-config>
其中form-beans元素中可以定义0个或1个以上的form-bean元素,每个form-bean被认为是一个ActionForm对象,name属性表示form-bean元素的名称,type属性指定其类名和路径。
Action-mappings元素用来包含零到多个action,其子元素action负责具体映射的详细信息。在action-mapping元素中可以定义0个或1个以上的action元素。每个action元素接受path属性定义的请求,并映射到type属性所定义的具体action对象。在映射过程中,将name属性定义的actionform一并传过去,它有如下属性:
Parameter,scope两个属性指定了传送方式和范围,scope常用的值有两个“session”和“request”。
Validate属性指定了是否需要actionform的验证。
Forward元素,将请求success转发到”/login_success.jsp”页面。
6、 业务逻辑类UserManager和自定义异常类
代码如下所示:
- packagecom.bjpowernode.struts;
- publicclassUserManager {
- publicvoid login(Stringusername,Stringpassword)
- {
- if(!"admin".equals(username))
- {
- thrownewUserNotFoundException();
- }
- if(!"admin".equals(password))
- {
- thrownewPasswordErrorException();
- }
- }
- }
自定义异常类UserNotFoundException和PasswordErrorException代码如下所示。
- packagecom.bjpowernode.struts;
- public class UserNotFoundExceptionextends RuntimeException {
- public UserNotFoundException() {
- }
- public UserNotFoundException(Stringmessage) {
- super(message);
- }
- public UserNotFoundException(Throwable cause) {
- super(cause);
- }
- public UserNotFoundException(Stringmessage,Throwable cause) {
- super(message, cause);
- }
- }
- packagecom.bjpowernode.struts;
- public class PasswordErrorExceptionextends RuntimeException {
- public PasswordErrorException() {
- }
- public PasswordErrorException(Stringmessage) {
- super(message);
- }
- public PasswordErrorException(Throwable cause) {
- super(cause);
- }
- public PasswordErrorException(Stringmessage,Throwable cause) {
- super(message, cause);
- }
- }
7、 视图jsp页面调用。
登录界面login.jsp,错误显示界面login_error.jsp,登录成功界面login_success.jsp。代码如下所示。
- <%@pagelanguage="java" contentType="text/html; charset=GB18030"
- pageEncoding="GB18030"%>
- <!DOCTYPEhtml PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
- <title>Inserttitle here</title>
- </head>
- <body>
- <form action="login.do" method="post">
- 用户:<inputtypeinputtype="text" name="username"><Br>
- 密码:<inputtypeinputtype="password" name="password"></br>
- <input type="submit" value="登录">
- </form>
- </body>
- </html>
Login_success.jsp.
- <%@page language="java"contentType="text/html;charset=GB18030"
- pageEncoding="GB18030"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
- <title>Insert title here</title>
- </head>
- <body>
- ${username},登录成功!
- </body>
- </html>
Login_error.jsp界面。
- <%@page language="java" contentType="text/html; charset=GB18030"
- pageEncoding="GB18030"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
- <title>Insert title here</title>
- </head>
- <body>
- <%--
- <%=request.getAttribute("msg") %>
- --%>
- ${msg }
- </body>
- </html>
就这样我们实现了运用struts框架完成用户登录。就这样从初步学习到简单应用,随着应用的次数增多,我们会对struts理解越来越深刻,并且感受struts框架给我们带来的便捷。
《转载》struts旅程《2》的更多相关文章
- 《转载》struts旅程《1》
struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...
- 转载-struts中logic标签使用
Struts中Logic逻辑标签的作用及用法 Struts中Logic逻辑标签的作用及用法 2006年10月18日 星期三 21:34 Terry原创,转载请说明作者及出处 Logic标签大部分的功能 ...
- Struts旅程(六)Struts页面转发控制ActionForward和ActionMapping
转自:https://blog.csdn.net/lovesummerforever/article/details/19125933
- Struts framework
Struts功能详解——ActionMapping对象 Struts旅程(一)Struts简介和原理 实例讲解DispatchAction和LookupDispatchAction DispatchA ...
- [转载]深入了解 Struts 1.1
转载自:http://www.ibm.com/developerworks/cn/java/l-struts1-1/ 摘要:作为基于 MVC 模式的 Web 应用最经典框架,Struts 已经正式推出 ...
- 转载:struts标签<s:date>的使用
转载网址:http://blog.sina.com.cn/s/blog_510fdc8b01010vjx.html s truts 标签 :<s:date/>作用:用来格式化显示日期的格式 ...
- 转载关于struts命名空间的一则报警
今天花了点时间把struts2警告事件彻底的测试了一边,终于有点眉目了.希望能给其他人带来一点帮助.文章属于原创.并不需要转载的时候注明出处,而是希望转载的朋友一定要看明白本文内容再转载,因为我你都清 ...
- Struts 笔记 内部资料 请勿转载 谢谢合作
Struts 概述 随着MVC 模式的广泛使用,催生了MVC 框架的产生.在所有的MVC 框架中,出现最早,应用最广的就是Struts 框架. Struts 的起源 Struts 是Apache 软件 ...
- struts.xml配置详解 内部资料 请勿转载 谢谢合作
1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件 ...
随机推荐
- 利用JavaScript计算引擎进行字符串公式运算
1.通过js计算引擎计算(java自带) 2.计算公式除了支持基本的方法之外还支持简单js脚本分支计算 3.通过设定map传入参数 4.默认返回最后一个计算结果,如果需返回特定值,将变量补写在公式最后 ...
- Linux 克隆虚拟机引起的“Device eth0 does not seem to be present, delaying initialization”
Linux 克隆虚拟机引起的“Device eth0 does not seem to be present, delaying initialization” 虚拟机Vmware上克隆了一个Red ...
- Windows与Linux下进程间通信技术比较
一般我们写的程序都是以单个进程的方式来运行的,比较少涉及到多进程.特别是在windows下,因为Windows是按照线程来分配CPU时间片的,线程是最小的调度单位,所以在Windows下更多的用到多线 ...
- 01 Developing Successful Oracle Application
本章提要-------------------------------本章是概述性章节1. 介绍了了解数据库内部结构对于开发的重要性2. 介绍了如何才能开发好的数据库应用程序------------- ...
- mysql查看表结构
SELECT COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT from information_schema.COLUMNS where TABLE_SCHEMA='ceco ...
- js学习笔记11----表单操作
1.复选框选中 var aInput = document.getElementsByTagname('input'); aInput[0].checked=true;
- C++构造函数后面的冒号
构造函数后加冒号是初始化表达式:有四种情况下应该使用初始化表达式来初始化成员:1:初始化const成员2:初始化引用成员3:当调用基类的构造函数,而它拥有一组参数时 4:当调用成员类的构造函数,而它拥 ...
- TensorFlow基础笔记(9) Tensorboard可视化显示以及查看pb meta模型文件的方法
参考: http://blog.csdn.net/l18930738887/article/details/55000008 http://www.jianshu.com/p/19bb60b52dad ...
- linux ad7606 驱动解读
本文记录阅读linux ad7606驱动的笔记. 主要文件 drivers/staging/iio/adc/ad7606_spi.c drivers/staging/iio/adc/ad7606_co ...
- strcpy、strncpy、memcpy的区别
一.strcpy.strncpy区别 struct gpInfo { char gpcode[9]; char gpName[50]; }; string gpstr = "SZ000001 ...