(21) java web的struts2框架的使用
在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框架的使用的更多相关文章
- (21) java web的struts2框架的使用-Action实现的三种方式
上一篇介绍了struts使用的四个步骤. 其中在开发action的时候,可以有三种实现方式: 1,写一个类,继承与ActionSupport 2,写一个类,实现Action接口 3,写一个类,实现业务 ...
- (24) java web的struts2框架的使用-action参数自动封装与类型转换
structs可以对参数进行自动封装,做法也很简单. 一,action参数自动封装: 1,可以直接在action类中,声明public的属性,接受参数. 2,属性也是是private,如果是priva ...
- (22) java web的struts2框架的使用-struts配置文件
1,配置文件的引用 struts中配置文件可以有多个,每个模块的包里面都可以单独设立一个struts配置文件. 主的配置文件,放在“src”文件夹下,可以引入其他配置文件,引入方式: <!-- ...
- (27) java web的struts2框架的使用-基于表单的多文件上传
和单个文件上传配置都是一样的,只是在action中接受参数时候,接受的是数组,不再是单个的文件. 一,action的实现: public class MutableFilesUpload extend ...
- (25) java web的struts2框架的使用-基于表单的文件上传
一,首先创建一个表单页面 <body> <form action="uploads" method="post" enctype=" ...
- (23) java web的struts2框架的使用-struts动态调用和通配符
一,动态查找 1,配置允许动态调用 <!-- 允许动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocat ...
- JAVA Web 之 struts2文件上传下载演示(二)(转)
JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...
- JAVA Web 之 struts2文件上传下载演示(一)(转)
JAVA Web 之 struts2文件上传下载演示(一) 一.文件上传演示 1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/ ...
- 【jframe】Java Web应用程序框架 - 第01篇:Get Started
jframe是什么? jframe是一个基于MIT协议开源的java web应用程序框架,汇聚了我们团队之于java web应用程序的核心架构思想以及大量最佳实践,并且持续在实际项目中不断完善优化. ...
随机推荐
- LeetCode(67) Add Binary
题目 Given two binary strings, return their sum (also a binary string). For example, a = "11" ...
- JSP默认选中下拉框的某一项
注意<c:if>标签要写在<option>标签里面 <select id="salesInventory_${s.index}" style=&quo ...
- 【02】使用Firebug查看和编辑HTML和CSS
使用Firebug查看和编辑HTML和CSS 描述 在本章节的教程中,我们将讨论如何使用Firebug查看和编辑HTML和CSS. 使用Firebug查看和编辑HTML 在你要查看的元素上右击鼠标然后 ...
- powerdesigner批量导出sql
- 返回json格式的数据
- HDU 5076 Memory
Memory Time Limit: 4000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 50 ...
- Leetcode 312.戳气球
戳气球 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * n ...
- msp430项目编程000
msp430中项目---LED数码管显示 1.数码管介绍 2.代码(直接使用引脚驱动) 3.代码(使用译码器驱动) 4.项目总结 msp430项目编程 msp430入门学习
- Codechef-ANCESTOR(树套树/CDQ分治)
题意: 给定两棵有根树,各有 N 个点.两棵树上的点分别被从 1 到 N 标号.两棵树的根均为标号为 1 的节点. 你的任务非常简单:对于每个 i,找到一个 j(j != i),使得在两棵树中 j 都 ...
- 登录页面练习servlet
登录练习: 1创建登录页面 创建servlet进行登录页面请求 2点击登录完成操作 浏览器发送请求到服务器(用户信息+其他数据 )3服务器调用对应的servlet进行处理 设置响应编码格式 获取请求信 ...