文档章节

Struts2初步

CarlDing
 CarlDing
发布于 2016/06/20 22:58
字数 885
阅读 21
收藏 2

struts/Hibernate/Spring(Glue) - > SSH

 

1:MVC/Service/Dao

 

 

 

2:Struts的版本

1:struts1 - >apache.org -  > 第一个MVC框架。 高耦合,依赖于JSP/Servlet。99-07

2:自s1成功以后 ,就有了很多的其他的框架

Spring mvc

Xwork/webwork - >Struts2

Jsf - >SUN

 

 

网页:

 http://struts.apache.org/download.cgi#struts25

 

 

下载以后:

  

 

 

 

3:快速入门

1:创建JavaWeb项目

 

 

2:导入struts2最少要求的包

 

 

 

3:在web.xml中配置struts2的核心过虑器

<filter>

<filter-name>s2</filter-name>

<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>s2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

 

4:添加struts2的配置文件,classpath:struts.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>

</struts>

 

 

 

5:启动测试

如果没有包装则:

org.apache.catalina.connector.RequestFacade@7342b9

如果被Stuts2包装了则是:

org.apache.struts2.dispatcher.StrutsRequestWrapper@10fc6fa <br>

<%=request%>

 

 

6:接收用户的请求

 

     可使用:

       POJO  - 简单Java对象

       Action/ActionSupport

 

package cn.actions;

 

public class HelloAction {

//默认要求可以添加珍上方法,

public String execute(){

System.err.println("Hello this is:"+this);

return "ok";

}

}

 

 

7:将上面的类,配置到struts.xml

<!-- 声明你的action类,name将做为url的一部分可以访问

     http://ip:port/project/hello

     http://ip:port/project/hello.action

 -->

 <action name="hello" class="cn.actions.HelloAction">

  <!--

  retrun ok;,默认是转发到这个show.jsp

   -->

   <result name="ok">/jsps/show.jsp</result>

 </action>

 

访问测试:

   <a href="${pageContext.request.contextPath}/hello">Hello</a>

<br>

<a href="${pageContext.request.contextPath}/hello.action">Hello-2</a>

 

 

2:使用maven开发Struts2

1:创建maven项目

 

 

 

2:添加依赖

<dependency>

<groupId>org.apache.struts</groupId>

<artifactId>struts2-core</artifactId>

<version>2.5</version>

</dependency>

 

3:在web.xml中配置struts2的核心过虑器

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

4:添加action

package cn.struts2.actions;

/**

 * s2的action是多例的每一次访问都会创建一个新的实例

 *

 */

public class OneAction {

public String execute(){

System.err.println("Hello 这是:"+this);

return "success";

}

}

 

 

5:配置action

<package name="oneone" extends="struts-default">

<action name="one" class="cn.struts2.actions.OneAction">

<!-- 如果没有给result设置名称,则默认的名称为name=success -->

<result>/jsps/show.jsp</result>

</action>

</package>

 

测试:

  

 

 

 

 

3:关于action

可以用三种方式开发action:

  1:POJO 请参考 前面的。

 

  2:实现接口action

 

 

必须要实现execute,可以使用常量 。

  package cn.struts2.actions;

 

import com.opensymphony.xwork2.Action;

 

public class TwoAction implements Action {

 

@Override

public String execute() throws Exception {

System.err.println("Hello TwoAction is:"+this);

return SUCCESS;

}

 

}

 

<!-- 配置第二个action -->

<action name="two" class="cn.struts2.actions.TwoAction">

<result>/jsps/show.jsp</result>

</action>

 

http://localhost/160606/two

 

 

3:继承ActionSupport

 

       public String execute() throws Exception {

        return SUCCESS;

}

 

package cn.struts2.actions;

 

import com.opensymphony.xwork2.ActionSupport;

 

public class ThreeAction extends ActionSupport {

@Override

public String execute() throws Exception {

System.err.println("Three action is:"+this);

return SUCCESS;

}

}

 

<action name="three" class="cn.struts2.actions.ThreeAction">

<result>/jsps/show.jsp</result>

</action>

 

 

 

 

4:Struts2的配置文件

配置文件顺序

 

 

Web.xml

 

 

default.properties

Struts2-core.jar

 

Struts-default.xml

Struts2-core.jar

 

Struts-plugin.xml

导入的插件包中

 

struts.xml

你息的配置文件

 

struts.properties

你息的配置文件

 

 

 

 

如修改配置:

struts.action.extension=action,,

 

<!-- 配置常量 -->

<constant name="struts.action.extension" value="one,wj,two"></constant>

 

 

 

 

5:接收参数的两种方式:

1:属性驱动

   声明get/Set方法

 

package cn.struts2.actions;

 

/**

 * s2的action是多例的每一次访问都会创建一个新的实例

 *

 */

public class OneAction {

private String nm;

private String pwd;

 

 

public void setName(String name) {

this.nm = name;

}

 

 

public String getPwd() {

return pwd;

}

 

public void setPwd(String pwd) {

this.pwd = pwd;

}

 

public String execute() {

System.err.println("Hello 这是:" + this + ",name is:" + nm + ",pwd is:" + pwd);

return "success";

}

}

 

http://localhost/160606/one?name=Jack&pwd=1234

 

 

2:模型驱动

public class TwoAction implements Action, ModelDriven<User> {

private User user = new User();

 

@Override

public User getModel() {

return user;// 返回的对象将接收参数

}

 

@Override

public String execute() throws Exception {

System.err.println("Hello TwoAction is:" + this + "user is:" + user);

return SUCCESS;

}

}

 

 

 

 

 

 

package cn.struts2.actions;

 

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;

 

import cn.struts2.domain.User;

 

public class ThreeAction extends ActionSupport implements ModelDriven<User> {

 

private User user = new User();

private String msg;

@Override

public User getModel() {

return user;

}

public String getMsg() {

return msg;

}

 

 

@Override

public String execute() throws Exception {

System.err.println("Three action is:" + this);

if (user.getName().equals("Jack") && user.getPwd().equals("1234")) {

return SUCCESS;

} else {

msg = "你的用户名或是密码错误";

return ERROR;

}

}

}

<action name="three" class="cn.struts2.actions.ThreeAction">

<result>/jsps/show.jsp</result>

<result name="error">/index.jsp</result>

</action>

 

 

© 著作权归作者所有

CarlDing
粉丝 5
博文 106
码字总数 78103
作品 0
济南
其他
私信 提问
SpringMVC初步学习

①DispatcherServlet(请求分配器,在web.xml中配置) ②HandlerMapping(请求映射器,eg:SimpleUrlHandlerMapping) ③Controller ④ViewResolver(View)(结果视图解析器,eg:UrlBasedVi...

silenceyawen
2016/05/07
53
0
struts2 + freemarker的问题

struts2 做MVC ,freemarker做表现层。 现在我要在页面上做一个简单的下拉框。如果用JSP做表示层,很简单: 但是这条语句,如果用Freemarker做为表示层之后,需要这么写: 但是这条语句在执行...

yonge
2009/04/09
3.2K
4
struts2模型驱动出现诡异的现象user.name设置出问题

最近遇到一个诡异的问题,问题描述: 一个tomcat 发布两个项目 A、B A项目:部分前台页面input使用类似 user.name 、user.password 等保存用户信息。貌似这个和struts2的模型驱动有关联。错误...

zzuqiang
2015/01/07
384
1
【CF 应用开发大赛】BBS社区微型论坛

应用名称:BBS社区微型论坛 应用URL地址:http://etpbbs.sdapp.cn/ 应用说明及使用场景: 很小巧的一个BBS论坛,可浏览帖子,发帖,对帖子回复,对自己的个人资料进行修改,查看发过的帖子和...

刘科_
2013/01/14
689
4
Java Web学习计划

--- 本月为入门阶段,从零开始,一步一步的做出一个实用的网站。 深入学习Java语言,初步掌握前端技术,使用JSP和MySQL完成一个简单的网站 第1周 Java高级编程学习目标:
1.深入了解JDK环境...

SVD
2016/12/01
165
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS3 : transition 属性

本文转载于:专业的前端网站➧CSS3 : transition 属性 CSS3的 transition 属性用于状态过度效果! 1、语法: 1 transition: property duration timing-function delay;2 -moz-transition: ...

前端老手
9分钟前
0
0
一个简单的加密工具,性能貌似不行,待优化

一个简单的加密工具,性能貌似不行,待优化 package com.kxvz.common.crypt;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import java.i......

Kxvz
11分钟前
0
0
vue实现路由懒加载

一、为什么要实现懒加载 减少首屏加载时间,避免白屏 二、常用的懒加载方式有两种:即使用vue异步组件 和 ES中的import a、vue异步加载: import Vue from 'vue' import Router from 'vue-ro...

Bing309
14分钟前
1
0
axios拦截器

axios.interceptors.response.use(response => { if (response.data.code == 0) { return response.data } else if (response.data.code == 600) { Cookies.remove('Admin-Token') router.pu......

Cyoya
16分钟前
0
0
给大家分享下部署云桌面的几个小技巧

从去年4月份开始我们公司就开始使用云桌面来进行上网办公的,在这一年多的使用过程中并没有出现像网上和有些用户说的那样,说云桌面各种坑老是出现这样和那样的问题,而我们之所以用的还不错...

GZASD
16分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部