Struts2 入门学习笔记(一)——基本配置

来源:互联网 发布:会声会影x7软件多大 编辑:程序博客网 时间:2024/05/24 01:00

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将执行默认类



















0 0
原创粉丝点击