一.什么是struts2
1.定义:
上面是我百度得来的,感觉没太明白,简单来说就是接受网页中表单提交的数据,然后通过 Action 进行处理,再返回到对应的网页。
2.具体流程:
1、客户端浏览器发出HTTP请求.
2、根据web.xml配置,该请求被FilterDispatcher(struts2核心)接收
3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC(控制反转)方式,将值注入给Aciton
4、 Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、 Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应jsp页面
6、返回HTTP响应到客户端浏览器
我总结了一下大概是这样一个过程吧。
二.struts2内容
1.需要配置web.xml(默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件文件), web.xml配置你了整个项目的信息,所以我们要在web.xml里面告诉项目我们要用struts2框架。
2.配置struts.xml文件,主要是用来配置action的。也就是请求处理之类的。
3. action:主要的开发都是围绕action进行的,action的信息主要在struts.xml文件中编写。
4.标签:UI标签,主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签。非UI标签,主要用于数据访问,逻辑控制等的标签。非UI标签可分为流程控制标签。在jsp页面中使用。
5.拦截器:在访问struts2中某个action之后或者之前,会自动调用的类,说明白点拦截器其实是Action的功能块,通过配置struts.xml文件来实现。举个例子:你想下载个东西,点击下载先跳出登陆页面,这就是拦截器搞的鬼,没有登录前很多页面或Action都被他拦截了 ,还有一些页面的重复提交。
如果有兴趣的话,可以查看struts2框架,我只列出一些重要的知识点,还有许多需要我们去学习。
三.struts2例子
第一步,先配置web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>//指明刚进去的网页
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
//指出使用struts2框架
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
第二步,创建一个首页面index.jsp:
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<% String context = request.getContextPath(); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
<a href="<%=context %>/actions/Studentadd">添加学生</a>
<a href="<%=context %>/actions/Studentdelete">删除学生</a>
<br />
<a href="<%=context %>/actions/Teacher_add">添加老师</a>
<a href="<%=context %>/actions/Teacher_delete">删除老师</a>
<a href="<%=context %>/actions/Course_add">添加课程</a>
<a href="<%=context %>/actions/Course_delete">删除课程</a>
</body>
</html>
第三步,创建StudentAction文件 :
package com.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class StudentAction extends ActionSupport {
public String add() {
return SUCCESS;
}
public String delete() {
return SUCCESS;
}
}
第四步,创建TeacherAction文件:
package com.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
public class TeacherAction extends ActionSupport {
public String add() {
return SUCCESS;
}
public String delete() {
return SUCCESS;
}
}
第五步,创建Studentadd_success.jsp:
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
Student Add Success!
</body>
</html>
第六步,创建Studentdelete_success.jsp:
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
Student Delete Success!
</body>
</html>
第七步,创建Teacher_add_success.jsp:
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
Teacher Add Success!
</body>
</html>
第八部,创建Teacher_delete_success.jsp:
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
Teacher Delete Success!
</body>
</html>
第九步,配置struts.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="actions" extends="struts-default" namespace="/actions">
<action name="Student*" class="com.struts2.action.StudentAction" method="{1}">
<result>/Student{1}_success.jsp</result>
</action>
<action name="*_*" class="com.struts2.action.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
<!-- {0}_success.jsp -->
</action>
</package>
</struts>
运行结果:
再总结一次struts项目的搭建流程:
1、创建项目
2、加入jar包
3、修改web.xml
4、修改struts.xml
5、编写Action
6、编写JSP页面
四.struts2心得
刚学习struts2的时候,感觉很麻烦,要配置这里,那里,web.xml和struts2.xml配置也不知道怎么去配置,但用久了,感觉也没什么东西去配置,都是熟悉的套路。关于struts2框架我还有很多很多地方没去尝试过,感觉还是要多使用才能对这框架有个更好的了解,也不要更深入的去了解struts2内部怎么运行的,这是个工具,能更好的运用就好。