好久没有动博客了。今天看了一下慕课网的视频,简单了解一下struts2。

首先是在项目中引入struts2的文件,有一个比较简单的方法就是可以直接右键项目MyEclipse->Project facets->install struts2

然后是在web.xml中进行相应的配置(filter过滤器),这里和不使用框架基本类似,代码如下,系统好像会自动生成默认的过滤,如下

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>TryStruts2</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>struts.action.extension</param-name>
<param-value>do</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--
<filter>
<filter-name>struts2_1</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2_1</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
-->
</web-app>

web.xml

然后写一个action文件,如下

 package com.imooc.action;

 import javax.servlet.http.HttpServletRequest;
import com.opensymphony.xwork2.ActionSupport; public class HelloWorldAction extends ActionSupport { private HttpServletRequest request; //helloworld.action public String add(){
// return SUCCESS;
return "add";
} public String update(){
// return SUCCESS;
return "update";
}
@Override
public String execute() throws Exception {
System.out.println("执行Action");
return SUCCESS;
} }

HelloWorldAction

然后是struts.xml文件,里面通过include引入了另外一个配置文件helloworld.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>
<include file="helloworld.xml"></include> <constant name="struts.action.extension" value="do"></constant> <!-- 感叹号方式 -->
<!-- http://localhost:8080/TryStruts2/helloworld!add.action -->
<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
</struts>

struts.xml

<constant name="struts.action.extension" value="do"></constant>这行代码是进行访问后缀的设置,也可以在web.xml中设置,value用逗号分隔

有三种动态的方法调用action ,一种是指定method属性,一种是用感叹号方式,但是最推荐的是用通配符的方式,所以前两种方式在代码中注释了

<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>   value设置为true就能开启感叹号访问方式

下面是helloworld.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>
<!-- 映射 -->
<!-- Action搜索顺序 1.判断当前包是否存在(存在2.1 不存在2.2) 2.1判断action是否存在,不存在则去默认namespase的package里面寻找action
2.2检查上一级路径的package是否存在,直到默认namespace --> <package name="default" namespace="/" extends="struts-default"> <!-- 默认action -->
<default-action-ref name="index"></default-action-ref>
<action name="index">
<result>/error.jsp</result>
</action> <action name="*_*_*" method="{2}" class="com.imooc.{3}.{1}Action">
<result>/result.jsp</result>
<result name="add">/{2}.jsp</result>
<result name="update">/{2}.jsp</result>
</action> <!-- 指定method属性 <action name="addAction" method="add" class="com.imooc.action.HelloWorldAction">
<result>/add.jsp</result> </action> <action name="updateAction" method="update"
class="com.imooc.action.HelloWorldAction"> <result>/update.jsp</result> </action> -->
</package> </struts>

helloworld

比如上面的配置访问路径就为http://localhost:8080/TryStruts2/HelloWorld_add_action.do或者action或者html

下面介绍一下action接收参数的3个方式 ,这里推荐一篇博客,写的很详细规范。但是我还是自己写一遍毕竟强迫症。

http://www.cnblogs.com/bukudekong/archive/2012/03/29/2423064.html

表示感觉炒鸡神奇,再次暴露看的书少- -之前都是用的request

1.使用Action的属性接收参数

首先是login.jsp,主要是一个表单,注意input的name属性

<form action="LoginAction.action" method="post">
用户名:<input type="text" name="username" />
密码:<input type="password" name="password" />
<input type="submit" value="提交" />
</form>

然后是LoginAction

 package com.imooc.action;

 import com.opensymphony.xwork2.ActionSupport;

 public class LoginAction extends ActionSupport {

     //action 属性取值
private String username;
private String password; public String login(){
System.out.println(username); return SUCCESS;
} 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;
}
}

LoginAction

最后在helloworld.xml进行action配置

<action name="LoginAction" method="login" class="com.imooc.action.LoginAction">
<result>/success.jsp</result>
</action>

2.使用DomainModel接收参数

首先是login.jsp  input的name相应的更改了

<form action="LoginAction.action" method="post">
用户名:<input type="text" name="user.username" />
密码:<input type="password" name="user.password" />
<input type="submit" value="提交" />
</form>

然后是一个po实体类

 package com.imooc.po;

 public class User {

     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;
}
}

User

然后是LoginAction

 package com.imooc.action;

 import com.imooc.po.User;
import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private User user; public String login(){
System.out.println(user.getUsername()); return SUCCESS;
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}
}

LoginAction

3.使用ModelDriven接收参数,感觉这个好叼

首先是表单 input的name改了,使用前要加这个,类似jstl标签<%@ taglib prefix="s" uri="/struts-tags" %>

<form action="LoginAction.action" method="post">
用户名:<input type="text" name="username" /><s:fielderror name="username"></s:fielderror>
密码:<input type="password" name="password" />
书籍1:<input type="text" name="bookList[0].username" />
书籍2:<input type="text" name="bookList[1].username" />
年龄:<input type="text" name="age" />
<input type="submit" value="提交" />
</form>

然后是实体类

 package com.imooc.po;

 import java.util.List;

 public class User {

     private String username;
private String password;
private int age;
private List<User> bookList;
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 List<User> getBookList() {
return bookList;
}
public void setBookList(List<User> bookList) {
this.bookList = bookList;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} }

User

然后是LoginAction

 package com.imooc.action;

 import com.imooc.po.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven; public class LoginAction extends ActionSupport implements ModelDriven<User>{ private User user=new User(); public String login(){ System.out.println(user.getUsername());
System.out.println(user.getBookList().get(0).getUsername());
System.out.println(user.getBookList().get(1).getUsername()); return SUCCESS;
} @Override
public User getModel() {
return user;
} @Override
public void validate(){
if(user.getUsername()==null||"".equals(user.getUsername())){
this.addFieldError("username", "用户名不能为空");
}
}
}

LoginAction

validate()方法用于验证用户名是否为空

在helloworld.xml中添加 用户处理表单验证不正确时返回登陆页

<action name="LoginAction" method="login" class="com.imooc.action.LoginAction">
<result>/success.jsp</result>
<!-- 表单验证不正确 -->
<result name="input">/login.jsp</result>
</action>

下面是5中处理结果类型

写的有点乱,简单记录一下

struts2入门的更多相关文章

  1. Struts2 入门

    一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...

  2. Struts2入门3 深入学习

    Struts2入门3 深入学习 处理结果和异常 前言: Struts学习的差不多了,还有最后的一点就收官了就是结果处理和异常处理.前面学习Struts主要围绕就是Action以及struts.xml配 ...

  3. Struts2入门2 Struts2深入

    Struts2入门2 Struts2深入 链接: http://pan.baidu.com/s/1rdCDh 密码: sm5h 前言: 前面学习那一节,搞得我是在是太痛苦了.因为在Web项目中确实不知 ...

  4. Struts2入门1 Struts2基础知识

    Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...

  5. struts2入门程序

    struts2入门程序 1.示例 搭建编程环境就先不说了,这里假设已经搭建好了编程环境,并且下好了strut2的jar包,接下来程序. 1.1 新建web项目 点击File->New->D ...

  6. struts2框架(1)---struts2入门

    struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说 ...

  7. [java]struts2入门

    摘要 本文是struts2入门,配置教程.如何在IntelJ Idea中进行手动配置.在使用idea新建struts2web项目的时候,在下载jar包的过程中,下载失败,没办法就直接手动进行下载jar ...

  8. ---web模型 --mvc和模型--struts2 入门

    关于web模型: 早期的web 应用主要是静态页丽的浏览〈如新闻的制监),随着Internet的发展,web应用也变得越来越复杂,不仅要 和数据库进行交互 ,还要和用户进行交互,由此衍生了各种服务器端 ...

  9. Struts2入门示例(Myeclipse)

    1.新建Web项目在lib导入struts-2.3.37核心基础jar包 2.在WebRoot新建2个JSP demo1.jsp <%@ page language="java&quo ...

  10. Struts2入门(六)——国际化

    一.前言 1.1.国际化简介 国际化是指应用程序在运行的时候,根据客户端请求来自的国家地区.语言的不同而显示不同的界面(简单说就是根据你的地区显示相关地区的语言,如果你现在在英国,那么显示的语言就是英 ...

随机推荐

  1. 百度地图Label 样式:label.setStyle

    创建文本标注对象设置样式的时候,其中的backgroundColor属性居然还支持透明啊,不过改变数值好像对效果没有影响 var numLabel = new BMap.Label(num); num ...

  2. Cocos2d-x CCNotificationCenter 通知中心

    相信接触过ios开发的人来说对NSNotificationCenter都不陌生.而在cocos2d-x中也参照这个类,提供了CCNotificationCenter这个类,用作通知中心. 那么Noti ...

  3. elk之nginx

    elk之nginx: ignore_older => 86400,不处理一天以前的文件. zjtest7-frontend:/usr/local/logstash-2.3.4/config# c ...

  4. nova的 microversion 实现

    之前想写nova的policy的实现, 但是发现网上,有人写的很不错了. 但是个人认为存在一些问题. ref: http://www.cnblogs.com/shaohef/p/4527436.htm ...

  5. extend vg(pv,lv)use HotPlug Storage PV for VMI(ECC Env)

    Preface: 前期存储未规划好,业务快速扩展,数据高安全需求(异地,More one copy),需求多多?NM干着干着活就会时不时的坑爹起来了!particularly Real Product ...

  6. 【HTML5】DOMContentLoaded事件

    这个事件是从HTML中的onLoad的延伸而来的,当一个页面完成加载时,初始化脚本的方法是使用load事件,但这个类函数的缺点是仅在所有资源都完全加载后才被触发,这有时会导致比较严重的延迟,开发人员随 ...

  7. Spring MVC 完整示例

    在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...

  8. SQlSERVER生成唯一编号

    基数表-用来存储编号前缀和类型 建表如下 CREATE TABLE [dbo].[SerialNo]( [sCode] [varchar](50) NOT NULL, [sName] [varchar ...

  9. Excel文件转换为html静态网页

    Excel文件转换为html静态网页:右键另存为:

  10. 启动tomcat的时候,服务器暂停到装载mysql驱动文件的原因

    1.使用spring+mybatis,由于mybatis的配置文件中jdbc类型的错误使得,tomcat无法正常启动,在编写mybatis一定确保jdbc类型,java类型正确,jdbc类型要大写! ...