Struts2 入门学习笔记(一)——基本配置
2016-04-12 16:51
495 查看
Struts2基本配置
Struts2是一种基于MVC模式的Java EE技术的Web开发框架,可以对使用JavaEE技术的web项目开发进行代码的分层,优点是利于维护,框架源代码主要来自于WebWork框架,主要优点体现在解耦上面。Struts的处理类称为action,用于取代servlet
一.优点和JAR包的准备
1.1优点
一次请求创建一个action类,及每一次请求的aciton都是新的。与servlet api解耦
封装数据 ,以前使用BeanUtils封装。
支持OGNL表达式。简单立即比EL强大。
使用值栈
类型转换
数据校验
代码增强--拦截器,类似与过滤器
1.2JAR包
二:开发流程
2.1 配置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"> <display-name></display-name> <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>
2.2创建控制层文件LoginAction.java
使用servlet时我们需要给类继承HttpServlet,而Struts不需要。package cn.sun.action; public class LoginAction { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String execute(){ UserinfoService userinfoService = new UserinfoService(); if(userinfoService.login(username, password)){ return "toOkJSP"; } return "toNoJSP"; } }
2.3 创建业务逻辑层Model文件—UserinfoService.java
这里我们不用Dao层,直接判断下,作为一个小例子package cn.sun.action; public class UserinfoService { /** * 登录验证 */ public boolean login(String username, String password) { if("a".equals(username) && "aa".equals(password)){ return true; } return false; } }
2.4 创建视图层View文件——login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <form action="login.action"> username:<input type="text" name="username"> password:<input type="password" name="password:"> <input type="submit" value="提交"> </form> </body> </html>
2.5 添加核心配置文件Struts.xml
这部分是核心,我们将在src目录下创建,首先要往xml中配置约束,用来确定这是struts文件约束内容可以在struts2-core.jar文件下找到,名字是struts-2.3.dtd,约束在其中就有,这里将复制到我们的xml中,文章最后有关于这部分的详解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="sytuts.devMode" value="true"></constant> <package name="anyone" namespace="/" extends="struts-default"> <action name="login" class="cn.sun.action.LoginAction"> <result name="toOkJSP">/ok.jsp</result> <result name="toNoJSP">/no.jsp</result> </action> </package> </struts>
2.6添加ok.jsp和no.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> OK </body> </html> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> NO </body> </html>
2.7运行项目
点击login.jsp页面执行相应操作转向相应的界面
三.struts.xml详解
1. <package> struts用于管理所有的请求处理类(Action) ,在 package可以配置多个action。
* name:给当前的包进行唯一命名。用于提供给其他继承的。
* namespace:给当前包所有的action提供一个统一的入口路径。
* extends:用于继承其他包。于是父包中的所有内容,子包都可以使用。
通常:extends="struts-default"
分析:struts-default.xml struts默认核心配置文件,用于配置struts已经完成所有功能。
位置:struts2-core-2.3.15.3.jar/struts-default.xml
内容: <packagename="struts-default"abstract="true">
* 例如:
<packagename="demoA"extends="struts-default">
<packagename="demoB"extends="demoA">
demoB 具有 demoA和struts默认 所有功能
2. <action> 用于配置请求处理类Action
* name : 请求action名称,用于提供给访问路径的。
* class : Action类的全限定类名
* method : Action类执行的方法名。默认值:execute
* 请求路径总结: package.namespace + "/" + action.name
* 例如: <packagenamesacpe="/a/b/c"><actionname="demoAction">
路径: /a/b/c/demoAction
3. <result> 用于配置结果集,确定执行那个jsp、另一个action等。
* name : 用于确定Action类的执行方法的返回值。
* text:标签体,用于确定jsp路径,如果使用/表示从WebRoot开始
* type : 结果集类型。默认值:dispatcher 表示请求转发。
4. <package><result-types> 用于结果集类型(可以看懂)
5. <package><interceptors> 用于配置拦截器(暂时了解)
<interceptor-stackname="defaultStack"> 将多个拦截器打包生成一个整体,此整体称为栈
6. <package><default-interceptor-ref> 默认拦截器的引用(暂时了解)
<default-interceptor-ref name="defaultStack"/> 所有的action将使用默认拦截器栈
7. <package><default-action-ref> 如果访问的路径使用的action不存在,将执行默认的action(可以看懂)
访问路径:/primer/xxxxAction
但没有配置:<actionname="xxxxAction"class="...">
进行访问:xxxxAction不存在,将执行默认配置
8. <package><default-class-ref> 如果访问的action,没有配置class属性,将执行默认的类。(可以看懂)
<actionname="userAction">
访问:/primer/uesrAction ,userAction已经配置,class将执行默认类
相关文章推荐
- LeetCode(java)9. Palindrome Number
- Java 实现线程死锁
- 一张图读懂Java多线程
- java 中JDK安装与环境变量配置
- 开发当中日期格式的转换(java语言)
- 远程访问对象java实现
- Java基础之JavaBean
- java中的栈与堆
- eclipse jrebel插件
- 毕向东 Java学习 笔记一
- LeetCode(java)8. String to Integer (atoi)
- jdk7 api
- 新版eclipse中NDK环境搭建(免Cygwin,超级快)
- android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
- SpringMVC中添加Velocity的配置
- Java 设计模式--策略模式
- Java 多线程同步的五种方法
- JAVA正则表达式的字符串查找操作
- [译]Java注解教程
- Java的正则表达式