您的位置:首页 > 编程语言 > Java开发

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将执行默认类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: