【SSH 基金会】SSH框架--struts进一步的详细解释(两)

简介:

继上篇博客        

既然我们知道了不使用struts给我们带来这么多弊端,那么以下我们来看看struts是怎样封装的。怎么解决我们出现的问题的?

 

先来说一下struts的基本流程,帮助大家理解以下的代码:

 

 Struts基本简要流程例如以下:

     1、client浏览器发出HTTP请求。

     2、依据web.xml配置。该请求被FilterDispatcher接收。

     3、依据struts.xml配置。找到须要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。

     4、Action调用业务逻辑组件处理业务逻辑,这一步包括表单验证。

     5、Action运行完成,依据struts.xml中的配置找到相应的返回结果result,并跳转到相应页面。

     6、返回HTTP响应到client浏览器。

 

演示样例分析(使用struts

 

配置文件web.xml

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>	

add.jsp

<%@ page language="java" contentType="text/html; charset=GB2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
	<head>
		<title>加入页面</title>
	</head>
	<body>
		<center>
			<s:form action="grade">
				<s:textfield name="grade.USERID" label="用户编号" />
				<s:textfield name="grade.USERNAME" label="用户姓名" />
				<s:textfield name="grade.CHINESE" label="语文成绩" />
				<s:textfield name="grade.MATHS" label="数学成绩" />
				<s:textfield name="grade.ENGLISH" label="英语成绩" />
				<s:submit value="确定" />
				<s:reset value="重置" />
			</s:form>
		</center>
	</body>
</html>

Struts.xml


<package name="book" extends="struts-default">
		<action name="grade" class="action.GradeAction">
			<result name="show">show.jsp</result>			
		</action>
		<action name="login" class="action.UserAction">
			<result name="success">success.jsp</result>
			<result name="error">error.jsp</result>
		</action>
</package>
 

GradeAction.java


public class GradeAction {
	private Grade grade;
	private List<Grade> gradeList;
	public Grade getGrade() {
		return grade;
	}
	public void setGrade(Grade grade) {
		this.grade = grade;
	}
	public List<Grade> getGradeList() {
		return gradeList;
	}
	public void setGradeList(List<Grade> gradeList) {
		this.gradeList = gradeList;
	}
	public String execute() throws Exception{
		GradeDao gradeDao=new GradeDao();
		gradeDao.insertGrade(grade);
		ArrayList<Grade> gradeList = (ArrayList) gradeDao.listGrade();
		this.setGradeList(gradeList);
		return "show";
	}

单纯的看,这两套代码(结合上篇博客来看),从代码量上来看,都是完毕相同的加入功能,使用struts后,明显代码量降低了很多。并且每一个操作完毕后的跳转页都配置到了配置文件里,这样给我们系统的维护带来了极大的便利。它相当于从界面到action传递的过程中,是以对象的方式传递的,就不须要我们像之前的操作那样一个字段一个字段的去获取。

 

当然另一点,就是struts是怎样解决servlet过多的问题的?


Struts.xml


 <package name="testlogin2" namespace="/user" extends="struts-default">
   
   		<action name="login" class="com.action.LoginAction2" method="doFun">
   			<result name="success">/success.jsp</result>
   			<result name="error" type="redirect">/error.jsp</result>
   			
   		</action>
   		<!-- 第三种方式 :一个action处理多个请求 如:user/modifyUser
   		<action name="*User_*" class="com.action.UserManagerAction" method="{1}User">
    		<result name="success">/{2}.jsp</result>
    		<result name="error">/error.jsp</result>
    	</action>-->
   		
   		<action name="*User" class="com.action.UserManagerAction" method="{1}User">
    		<result name="success">/success.jsp</result>
    		<result name="error">/error.jsp</result>
    	</action>
   		
   		
   </package>

public class UserManagerAction extends ActionSupport {
	
	private User user;
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public String addUser(){
		System.out.println("---------AddUser()-------");
		return "success";
	}
	public String modifyUser(){
		System.out.println("---------ModifyUser()-------");
		return "success";
	}
	public String delUser(){
		System.out.println("---------DelUser()-------");
		return "success";
	}
}

servlet的关系

 

     前面我们说对于Model 2模型来说。Servlet过多,转向频繁。流程。配置等不易集中管理,那么strutsServlet有什么关系?它怎么就能解决Servlet的这些问题呢?

 

     能够说Struts2本质还是一个Servlet。仅仅是对Servlet进一步的封装罢了

   

     对于解决这个问题来说:

     打个例如:做Web项目,好比建房子。

     Servlet好比木材。用一根根的木材搭,也可盖起房子。仅仅是速度慢而已。

     Struts2好比是用木材做好的一个房子大概结构,要建房子时,仅仅需把它拿过来,再往其里面添砖加瓦,修修补补,就能非常快盖好房子,这要比直接使用Servlet要快得多

 

 

以上仅仅是我对struts的简单理解,用一句话概括,struts就是将某些功能进行提取,然后做了一个封装。能让我们更好的使用(框架)。

当然对于它的优势还须要我们在以后做项目的过程中慢慢体会!





版权声明:本文博客原创文章。博客,未经同意,不得转载。






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4640750.html,如需转载请自行联系原作者


相关文章
|
Java 关系型数据库 MySQL
JSP SSH公车拍卖系统myeclipse开发mysql数据库bs框架java编程网结构
JSP SSH公车拍卖系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
77 0
|
1月前
|
Java 数据库连接 数据库
让星星⭐月亮告诉你,SSH框架01、Spring概述
Spring是一个轻量级的Java开发框架,旨在简化企业级应用开发。它通过IoC(控制反转)和DI(依赖注入)降低组件间的耦合度,支持AOP(面向切面编程),简化事务管理和数据库操作,并能与多种第三方框架无缝集成,提供灵活的Web层支持,是开发高性能应用的理想选择。
38 1
|
5月前
|
网络安全 数据安全/隐私保护
分布式系统详解--框架(Hadoop-Ssh免密登陆配置)
分布式系统详解--框架(Hadoop-Ssh免密登陆配置)
55 0
|
6月前
|
Java 数据库连接 网络安全
SSH 组合框架模式小知识分享
【5月更文挑战第4天】SSH 组合框架模式小知识分享
44 0
|
6月前
|
前端开发 Java 网络安全
基于SSH框架甜品商城管理系统【源码+数据库】
基于SSH框架甜品商城管理系统【源码+数据库】
|
前端开发 Java 关系型数据库
JSP仓库进销存系统ssh框架mysql数据库myeclipse开发mvc结构java
JSP 仓库进销存系统(struts2+hibernate) 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
57 0
|
Java 网络安全 Spring
SSH框架学习中遇到的问题
SSH框架学习中遇到的问题
54 0
|
Java 应用服务中间件 网络安全
【ssh系列一】——框架搭建
建立项目(SpringMVC+Spring+hibernate的maven项目)
|
设计模式 开发框架 缓存
SSH框架简介篇
SSH框架简介篇
412 0
|
SQL 缓存 Java
《SSH框架》---Hibernate
《SSH框架》---Hibernate
106 0
下一篇
无影云桌面