两种早期的JSP开发模型:
模型一:JSP+JavaBean
Jsp负责页面的显示
JavaBean负责存储数据和实现业务逻辑
如图:
由于需要在jsp页面中编写流程控制和调用javabean代码,所以当逻辑变得复杂起来时,jsp页面就变得十分复杂。
适用于:小型应用,业务逻辑不复杂的应用
模型二:JSP+JavaBean+Servlet(MVC架构)
JSP:负责页面显示
JavaBean实现存储数据和业务逻辑
Servlet:负责流程控制
适用于:大型逻辑复杂的项目
基于MVC架构的应用程序有很多不变之处:
- 所有请求直接访问控制器,由控制器对请求进行分发
- 由控制器对JavaBean进行实例化,负责业务逻辑处理和数据存储
- 控制器处理请求,根据结果转发页面
变化之处在于:
- 用户URL的不同对应不同的处理单元
- 不同的表单页面需要不同的JavaBean存储
- 不同的处理结果导致不同的页面转发
基于这些不同,通过一种外部文件将需要变化的地方描述清楚(xml文件),通过这种配置文件来灵活设置变化部分,我们就可以把Web软件做成一个开发平台,由于软件已经基于MVC架构实现了基础结构,开发者只需实现其特定本身应用(编写页面,实现Controll类,配置配置文件)就可以完成Web软件的开发,这样一种软件称为Web框架。
下载和安装Struts2
一,下载压缩包
提供Struts struts-2.3.37-all版本
链接:https://pan.baidu.com/s/1UQclamgAqH4NPG6_bk9nCA
提取码:m8d8
解压到本地目录,以供使用,解压后lib下会有很多jar包,下面给出开发Struts2开发所必须的jar包
二、编写万年不变的“Hello World”程序(编程环境已准备好,本环境为jdk1.7+tomcat8.0)
- 创建Dynamic Web Project 项目
- 在lib文件夹下导入jar包
3.在web.xml中配置FilterDispatcher
FilterDispatcher相当于Struts2的核心控制器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<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>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
4.编写Action类
创建HelloAction类,实现Action 接口来自于(com.opensymphony.xwork2.Action)
代码如下:
package controller;
import com.opensymphony.xwork2.Action;
public class HelloAction implements Action {
private String message;
public String getMessage() {
return message;
}
@Override
public String execute() throws Exception {
message= "Hello World!";
return SUCCESS;
}
}
5.编写结果页面
hello.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<s:property value="message"/>
</body>
</html>
6.在struts.xml中配置action
在如图目录结构下创建struts.xml,并且配置Action
代码如下:
<?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="Controller" extends="struts-default">
<action name="login" class="Controller.LoginAction5" method="execute">
<result >/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
<action>标签中name属性是指用户访问的URL,其name需要注意(1:不要在name前加“/”。(2:不要加后缀名“.action”
发布并运行项目:在地址栏中访问HelloWorld
第一个项目就此完成。