从今天开始,一起跟各位聊聊java的三大框架——SSH。先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。今天通过一个简单的例子来说说Struts。
登录页面:
这里面没啥东西,主要就是将action命名成“.do”的形式,让Struts通过配置文件来执行相应操作。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="login.do" method="post">
用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"></br>
<input type="submit" value="登录">
</form>
</body>
</html>
PS:表单中的name值必须跟对应的actionform的get、set属性一致。
web.xml:
它的作用就是告诉Struts它的配置文件(struts-config.xml)在哪,让Struts可以找到,还有执行的动作(.do),还有加载顺序之类的。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<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>
<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>
</web-app>
struts-config.xml:
从名字上就能看出来,这是Struts的配置文件。form-bean用来接收提交的表单数据,action-mappings用来执行相应的动作。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.lsj.struts.LoginActionForm"/>
</form-beans>
<action-mappings>
<action path="/login"
type="com.lsj.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>
这个类就是用来处理用户登录的业务逻辑
package com.lsj.struts;
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;
public class LoginAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginActionForm laf = (LoginActionForm)form;
String username = laf.getUsername();
String password = laf.getPassword();
UserManager userManager = new UserManager();
try {
userManager.login(username, password);
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");
}
}
通过上面这个简单的小实例,大家可以清晰的看出,两个配置文件起到了一个很好的串联作用。也正是因为有配置文件,所以才是程序变得非常的灵活。这个小例子比较简单,配置文件承担的责任不是很多,后面的东西会更多的用到配置文件,体会就会更加的深刻了。最后为大家附上源码方便一起研究讨论。
源代码
分享到:
相关推荐
菜鸟成长手册2009——CPU-内存-硬盘篇 - 硬件知识精华菜鸟成长手册2009——CPU-内存-硬盘篇 - 硬件知识精华菜鸟成长手册2009——CPU-内存-硬盘篇 - 硬件知识精华菜鸟成长手册2009——CPU-内存-硬盘篇 - 硬件知识精华...
菜鸟学习ARM——安装交叉编译链记录,及编译jpeg
菜鸟也玩LINUX——brk()漏洞重提.pdf
菜鸟构建个人网站——“纯真年代”建站全过程(五).pdf
菜鸟学SSH-v1.0.pdf
ssh框架中的struts4,以及ssh框架整合的实例,该实例比较适合初学者
SSH之路 其实我只想说的是我是一只对Java编程来说不折不扣的菜鸟,原先最网页前端开发的我最近迷上了底层代码开发,于是开始自学java编程,在同事同学的建议下,选择了SSH。写这些日志的原因只是想把自己这段自学的...
php程序员菜鸟成长手记——php入门教程
ASP.NET源码——[电子商务]菜鸟商城系统.zip
java学习进阶之路,如果从一个菜鸟进阶成大神(csdn)————程序
这个编程规范很不错,让你知道书上的程序和网上的程序的那些编排,变量的定义为什么是这样定义,因为你不知道在程序界有他们共同的规定,当你了解了这篇文章你的程序会突飞猛进,会让别人一看就是专业人员写出来的...
ssh框架简单教程 附ssh框架做的简单的注册登陆案例
适用与初学者的ssh(Struts+Spring+Hibernate)案例,菜鸟入门经典,千万不要错过啊!!!
Android菜鸟成长笔记(十三)——碎片(一)一篇完整源码 地址:http://blog.csdn.net/zenail501129/article/details/25473829 保证代码正确。
小艾是一位新入职的菜鸟测试工作者,他面对着测试这一未知的领域,在导师的悉心栽培和指导下走进了测试工作。在这个过程中,他经历了测试的各个方面和阶段,积攒下丰富的理论和实践经验,经过各种学习和历练,终于...
菜鸟也能玩硬件——CPU篇.pdf
电子版的Python GUI设计之Tkinter菜鸟编程,一般是扫描图片组成的PDF或网页版 ,不支持查找操作,特整理成Word版并分享。
物联网——智能物流菜鸟京东PPT学习教案.pptx
Python 语言简单针对深度学习的算法,以及独特的深度学习框架,将在人工智能领域编程语言中占重要地位。 Python 是一种代表简单主义思想的语言。吉多·罗萨姆对 Python 的定位是“优雅,明确,简单”。Python 拒绝了...