在javaweb开发过程中,如果只使用servlet,jdbc,jsp进行开发,也可以遵从MVC的模式,这时候,servlet相当于control层,属于负责处理业务逻辑的控制器,同时也需要对获取和返回数据,链接的跳转和转发进行封装。那么就显得比较臃肿了。(类似iOS开发中的MVC,如果viewController负担了数据处理,业务处理和页面跳转逻辑,会变得臃肿不堪,所以后面MVVM,VIP等模式进一步细化了模块划分)。

struts框架,是apache公司开发的一款基于servlet封装而成的框架,遵从MVC的设计模式,能进一步提高开发效率。

如果脱离struts框架,使用Servlet做项目开发,在项目启动以后,每个模块中的各个接口,都会被可能写成一个Servlet,每个Servlet在服务器启动一个都会在第一访问(可以配置)建时候被创建一个servlet对象。Struts框架,可以通过过滤器,把Servlet降低为一个,通过区分不同的action,来区分不同的业务功能接口,某种程度上优化了Servlet的实现。

structs2框架的使用:

1,导入struts2的jar包:

  struts2-core-xxx.jar 核心功能包

  xwork-core-xxx.jar  xword核心包

  commons-fileupload-xxx.jar  文件上传功能包

  commons-io-xxx.jar   io读写支持文件上传功能

  ognl-xxx.jar   ognl表达式支持包

  commons-langxxx.jar lang的扩展

  freemarker-xxx.jar 标签模版庫

  javassist-xxx.jar  字节码处理

  其他按需求导入

2,配置web.xml

  主要是引入过滤器,StrutsPrepareAndExecuteFilter,核心过滤器

	<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>

3,开发Action

  action是动作类,通常继承ActionSupport

  action进行业务处理,执行具体的请求。

    必须返回字符串类型String

    方法无参数。

  

package actions;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L; public String login() throws Exception {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter(); out.write("success");
out.close();
return null;
}
}

  如果返回具体的字符串,客户端会展示struts.xml中配置的result返回页面,返回null,然后进行response write方法,可以单纯返回字符串,相当于api接口

4,配置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>
<package name="actions" extends="struts-default">
<action name="login" class="actions.LoginAction" method="login">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>

  name: 访问的接口uri

  class:具体执行的Action类,带完整包名

  method:Action处理的具体函数名

(21) java web的struts2框架的使用的更多相关文章

  1. (21) java web的struts2框架的使用-Action实现的三种方式

    上一篇介绍了struts使用的四个步骤. 其中在开发action的时候,可以有三种实现方式: 1,写一个类,继承与ActionSupport 2,写一个类,实现Action接口 3,写一个类,实现业务 ...

  2. (24) java web的struts2框架的使用-action参数自动封装与类型转换

    structs可以对参数进行自动封装,做法也很简单. 一,action参数自动封装: 1,可以直接在action类中,声明public的属性,接受参数. 2,属性也是是private,如果是priva ...

  3. (22) java web的struts2框架的使用-struts配置文件

    1,配置文件的引用 struts中配置文件可以有多个,每个模块的包里面都可以单独设立一个struts配置文件. 主的配置文件,放在“src”文件夹下,可以引入其他配置文件,引入方式: <!-- ...

  4. (27) java web的struts2框架的使用-基于表单的多文件上传

    和单个文件上传配置都是一样的,只是在action中接受参数时候,接受的是数组,不再是单个的文件. 一,action的实现: public class MutableFilesUpload extend ...

  5. (25) java web的struts2框架的使用-基于表单的文件上传

    一,首先创建一个表单页面 <body> <form action="uploads" method="post" enctype=" ...

  6. (23) java web的struts2框架的使用-struts动态调用和通配符

    一,动态查找 1,配置允许动态调用 <!-- 允许动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocat ...

  7. JAVA Web 之 struts2文件上传下载演示(二)(转)

    JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...

  8. JAVA Web 之 struts2文件上传下载演示(一)(转)

    JAVA Web 之 struts2文件上传下载演示(一) 一.文件上传演示 1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/ ...

  9. 【jframe】Java Web应用程序框架 - 第01篇:Get Started

    jframe是什么? jframe是一个基于MIT协议开源的java web应用程序框架,汇聚了我们团队之于java web应用程序的核心架构思想以及大量最佳实践,并且持续在实际项目中不断完善优化. ...

随机推荐

  1. HTML+CSS 制作HTML5标志图

    效果图如下:(是用代码写的,而不是图片!) 网上看到的代码. 看了下,就是CSS的transform属性的应用.加上定位等.组合在一起形成图片. 没什么难点,就是width,left等数据得根据HTM ...

  2. Java基础学习总结(90)——Java单元测试技巧

    测试是开发的一个非常重要的方面,可以在很大程度上决定一个应用程序的命运.良好的测试可以在早期捕获导致应用程序崩溃的问题,但较差的测试往往总是导致故障和停机. 虽然有三种主要类型的软件测试:单元测试,功 ...

  3. zoj 1240

    IBM Minus One Time Limit: 2 Seconds      Memory Limit: 65536 KB You may have heard of the book '2001 ...

  4. zoj 2812

    Quicksum Time Limit: 2 Seconds      Memory Limit: 65536 KB A checksum is an algorithm that scans a p ...

  5. Django 的信号 & Flask 的信号

    信号:框架内部已帮助开发者预留的可扩展的位置 一.Django 的信号 项目目录结构: django_signal |--- app01 |--- models.py |--- views.py .. ...

  6. 洛谷P2814 家谱(gen)

    题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组 ...

  7. castle problem——(深度优先搜索,递归实现和stack实现)

    将问题的各状态之间的转移关系描述为一个图,则深度优先搜索遍历整个图的框架为:Dfs(v) {if( v 访问过)return;将v标记为访问过;对和v相邻的每个点u: Dfs(u);}int main ...

  8. 哀悼改变全站颜色为灰色CSS代码收藏

    <style type="text/css">   *{       filter:progid:DXImageTransform.Microsoft.BasicIma ...

  9. IdHttp 资料

    http://blog.csdn.net/delphizhou/article/details/3085704 IdHttp 资料 网上找了些不过很不好找.今天找了些收藏在一起.以便他人查阅, idh ...

  10. Codeforces 660C Hard Process【二分 Or 尺取】

    题目链接: http://codeforces.com/problemset/problem/660/C 题意: 给定0.1组成的数组,可以改变k个0使其为1,问最终可以得到的连续的1的最大长度. 分 ...