简单搭建Struts2 Web框架

前言

Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。
作为最成功的Web框架,Struts自然拥有众多的优点:
MVC 2模型的使用
功能齐全的标志库(Tag Library)
开放源代码
但是,所谓“金无赤金,人无完人”,Struts自身也有不少的缺点:
需要编写的代码过多,容易引起“类爆炸”
单元测试困难
这些缺点随着Web的发展越来越明显。这就促生了Struts 2.0

环境搭建

前提

  • Java相关环境
  • maven插件已安装

建立web项目

1、导入Struts2依赖

	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>${struts2.version}</version>
		</dependency>
	</dependencies>

2、配置web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
  <display-name>Archetype Created Web Application</display-name>
  <!--struts2中央控制器  -->
  <filter>
  	<filter-name>StrutsPrepareAndExecuteFilter</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>StrutsPrepareAndExecuteFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

3、配置struts.xml
struts.xml(核心配置文件):引入其他xml配置
struts.properties(全局属性文件)
struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<include file="struts-default.xml"/>
	<include file="base.xml"></include>
    <include file="sys.xml"></include>
</struts>
	

base.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<!-- 属性文件 以键和值的方式存在配置到xml里面去    字符编码  dev(开发)模式  改了配置文件会自动加载-->
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<constant name="struts.devMode" value="true" />
	<constant name="struts.configuration.xml.reload" value="true" />
	<package name="base"  extends="struts-default" abstract="true">
		<global-allowed-methods>regex:.*</global-allowed-methods>
	</package>
</struts>

sys.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<package name="sys" namespace="/sys" extends="base" >
	<action name="bookAction_*" class="com.zking.action.BookAction" method="{1}">
	<result name="list">/list.jsp</result>
	</action>
	</package>
</struts>

4.建立BaseAction

package com.zking.action;

import java.util.List;

import com.opensymphony.xwork2.ModelDriven;
import com.zking.base.BaseAction;
import com.zking.dao.BookDao;
import com.zking.entity.Book;
import com.zking.util.JsonData;
import com.zking.util.PageBean;

public class BookAction extends BaseAction implements ModelDriven<Book> {
	private BookDao bd=new BookDao();
	private Book b=new Book();
	@Override
	public Book getModel() {
		return b;
	}
	
	public String add() {
		JsonData jsonData=new JsonData();
		bd.addBook(b);
		jsonData.setCode(0);
		jsonData.setMessage("书本新增成功");
		this.toJson(jsonData);
		return null;
	}
	
	public String list() {
		PageBean pageBean=new PageBean();
		pageBean.setRequest(request);
		request.setAttribute("pageBean", pageBean);
		
		List<Book> listBook = bd.listBook(b, pageBean);
		request.setAttribute("listBook", listBook);
		System.out.println(listBook);
		return "list";
	}
}

5.在webapp下建立jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="z" uri="/zking"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>书籍查询</h1>
	<table border="1" width="100%">
		<tr>
			<td>ID</td>
		    <td>书名</td>
		    <td>封面</td>
		    <td>价格</td>
		    <td>操作</td>
		</tr>
		<c:forEach var="v" items="${listBook }">
		<tr>
			<td>${v.bookId }</td>
		    <td>${v.bookName }</td>
		    <td>
		    <c:if test="${v.bookImage !=0 }">
		    <a href="<%=request.getContextPath()%>/sys/fileAction_saveAs.action?fileId=${v.bookImage }"><img style="width:80px;height:80px;" src="<%=request.getContextPath()%>/sys/fileAction_open.action?fileId=${v.bookImage }"></a>
		    </c:if>
		    </td>
		    <td>${v.bookPrice }</td>
		    <td><a href="<%=request.getContextPath()%>/bindBookImage.jsp?bookId=${v.bookId }">上传封面</a>
		    <c:if test="${v.bookImage !=0 }">
		    <a href="<%=request.getContextPath()%>/sys/fileAction_saveAs.action?fileId=${v.bookImage }">另存为</a>
		    </c:if>
		    </td>
		</tr>
		</c:forEach>
	</table>
	<z:page pageBean="${pageBean }"/>
</body>
</html>

好啦,初始学习就到这里啦,可以直接复制代码测试玩一下
个人认为struts2需要掌握的重点包含:

  • XML是什么含义
  • struts2的常用标志
  • 关于struts2的action理念
  • struts2拦截器的工作原理
  • 在struts2中实现IOC、文件上传、CRUD
  • struts2中的OGNL表达式
  • struts2和ajax如何交互
    通过学习struts2你要明白的几个概念:
    反射的原理、MVC架构、xml建模

其他知识点

OGNL

1 OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言
2 OgnlContext(ongl上下文)其实就是Map<String,Object>
OgnlContext=根对象(1)+非根对象(N)
非根对象要通过"#key"访问,根对象可以省略"#key"
注意:context:英文原意上下文,容器
3 把根对象和非根对象说出来
附:struts2中ODNL结构图
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值