JavaWeb框架-Struts2-1-Hello Struts2!
2017-10-29 18:56
369 查看
话说:
世界之所以缤纷多彩,就在于百花齐放!Web框架世界也是如此。Hibernate有它的魅力,Struts2也自有特点。来来,亲爱的读者朋友,我们一起来揭开Struts2的面纱吧。
目录:
一、整体架构
二、环境搭建
1、下载包
2、新建Maven项目(Web项目)
3、3种方式创建Action
4、配置struts.xml
5、配置web.xml
三、3中接收参数方式
四、总结
一、整体架构
开发环境:IDEA(2017.2.5)
最好新建Maven项目,Web项目也是可以的。
笔者经验,在MyEclipse、Eclipse中创建Maven项目都是一道坎,容易遇到各种报错,但是在IDEA中,It’s so Easy!
如果是web项目,把struts.xml放到src下即可,根据下载的包,把对应的包复制到lib下即可,其他跟Maven一模一样。
二、环境搭建
1、下载包
http://struts.apache.org/download.cgi#struts2513
下载那个-all的包。里面包含了所有。
作用是,方便在里面找到struts.xml配置文件,直接可以“拿来主义”。
2、新建Maven项目(Web项目)
此处省略100字……
如果读者对IDEA创建Maven项目有疑问,请参考笔者笔记:
http://note.youdao.com/noteshare?id=99b36d0e601fb56725fb7a7acece4aae&sub=D36A8FC839854BEE8C17FD6793E53BA3
3、3种方式创建Action
共3中方式创建Action,常用法一,简单嘛,什么也不用继承或者实现。Action作用类似我们的Servlet,主要实现业务逻辑、接收参数及页面跳转。
法一:普通Java类,编写public String execute() {}方法(要严格按照这个规矩来奥);
法二:实现Action接口,重写execute()方法;
法三:继承ActionSupport类,重写execute()方法。
4、配置struts.xml
5、配置web.xml
这个类,是Struts2规定死的,我们不用死记,只需要记住类:StrutsPrepareAndExecuteFilter,然后写一个测试类,自动导入即可。
这个过滤器有什么用呢?以前我们配置Servlet的时候,直接在web.xml中配置,所以默认和页面请求建立了关系。但这里我们在struts.xml中配置,怎么和页面建立联系呢?就是这个过滤器在起作用。
后续测试也可以发现,内置已经处理了中文编码问题,帅气!
三、3中接收参数方式
struts2有3中方式接收参数,最好做个对比表。原谅在下比较懒惰,所以嘛,看代码喽。
法一:属性方式接收
法二:JavaBean方式接收
法三:ModelDriven方式
三种方式法二、法三用得多。
这里分别用:LoginAction、LoginAction2、LoginAction3来实现三种接收参数的方式,对应的页面是:login.jsp、login2.jsp、login3.jsp
struts.xml不在重复,请读者参考创建Action的struts.xml配置。3中方法都可以输出username、pwd、及age。
1、法一:属性方式接收
LoginAction
login_success.jsp
三种方法共用此界面。
login.jsp
2、法一:JavaBean方式接收
这个最主要的特点是,把页面参数封装到一个实体类中,页面通过对象.属性来建立联系。
LoginAction2
配置struts.xml(见最上面)
login2.jsp
注意,页面name=”user.username”
3、法三:ModelDriven方式
LoginAction3
配置struts.xml(见最上面)
login3.jsp
这里页面属性可以恢复我们之前的习惯了。
使用ModelDriven,要news这个对象。
四、总结
1、Struts2给我们提供了获取参数的一个全新的视角:不用req.getParameter()等,页面跳转等都是不同于Servlet的全新方式;
2、web.xml中的过滤器,不用我们处理中文编码问题啦;
3、没有对比,就木有伤害。所以,博观而约取,项目中灵活运用即可。
好了,开饭喽!下期再会!
世界之所以缤纷多彩,就在于百花齐放!Web框架世界也是如此。Hibernate有它的魅力,Struts2也自有特点。来来,亲爱的读者朋友,我们一起来揭开Struts2的面纱吧。
目录:
一、整体架构
二、环境搭建
1、下载包
2、新建Maven项目(Web项目)
3、3种方式创建Action
4、配置struts.xml
5、配置web.xml
三、3中接收参数方式
四、总结
一、整体架构
开发环境:IDEA(2017.2.5)
最好新建Maven项目,Web项目也是可以的。
笔者经验,在MyEclipse、Eclipse中创建Maven项目都是一道坎,容易遇到各种报错,但是在IDEA中,It’s so Easy!
如果是web项目,把struts.xml放到src下即可,根据下载的包,把对应的包复制到lib下即可,其他跟Maven一模一样。
二、环境搭建
1、下载包
http://struts.apache.org/download.cgi#struts2513
下载那个-all的包。里面包含了所有。
作用是,方便在里面找到struts.xml配置文件,直接可以“拿来主义”。
2、新建Maven项目(Web项目)
此处省略100字……
如果读者对IDEA创建Maven项目有疑问,请参考笔者笔记:
http://note.youdao.com/noteshare?id=99b36d0e601fb56725fb7a7acece4aae&sub=D36A8FC839854BEE8C17FD6793E53BA3
3、3种方式创建Action
共3中方式创建Action,常用法一,简单嘛,什么也不用继承或者实现。Action作用类似我们的Servlet,主要实现业务逻辑、接收参数及页面跳转。
法一:普通Java类,编写public String execute() {}方法(要严格按照这个规矩来奥);
法二:实现Action接口,重写execute()方法;
法三:继承ActionSupport类,重写execute()方法。
package com.hmc.struts2.action; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionSupport; /** * User:Meice * 2017/10/29 */ public class HelloAction extends ActionSupport{ /* @Override public String execute() throws Exception { System.out.println("法三:继承ActionSupport,重写execute方法..."); return "success"; }*/ //法二:实现Action接口,实现其中方法.注意导入的包:com.opensymphony.xwork2.Action; /*public String execute() throws Exception { System.out.println("法二:实现Action接口,实现execute方法..."); return "success"; } */ //法一:自己写一个方法:这个方法按照以下格式,返回String类型,方法名:execute,不能自作主张奥! //默认方法名就叫做execute(),若要自定义,用method属性定义 public String execute() { System.out.println("法一:自己写execute方法;execute Hello ....."); return "success"; } }
4、配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="test" extends="struts-default"> <!--namespace默认:/ --> <action name="hello" class="com.hmc.struts2.action.HelloAction"> <!--结果跳转,默认使用转发dispatcher--> <result name="success">/hello.jsp</result> </action> <!--Action接受参数法一:属性方法--> <action name="login" class="com.hmc.struts2.action.LoginAction" method="login"> <result name="success">/login_success.jsp</result> </action> <!--Action接受参数法二:JavaBean--> <action name="login2" class="com.hmc.struts2.action.LoginAction2" method="login2"> <result name="success">/login_success.jsp</result> </action> <!--Action接受参数法三:ModelDriven--> <action name="login3" class="com.hmc.struts2.action.LoginAction 10a06 3" method="login3"> <result name="success">/login_success.jsp</result> </action> </package> </struts>
5、配置web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!--配置过滤器--> <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> </web-app>
这个类,是Struts2规定死的,我们不用死记,只需要记住类:StrutsPrepareAndExecuteFilter,然后写一个测试类,自动导入即可。
这个过滤器有什么用呢?以前我们配置Servlet的时候,直接在web.xml中配置,所以默认和页面请求建立了关系。但这里我们在struts.xml中配置,怎么和页面建立联系呢?就是这个过滤器在起作用。
后续测试也可以发现,内置已经处理了中文编码问题,帅气!
三、3中接收参数方式
struts2有3中方式接收参数,最好做个对比表。原谅在下比较懒惰,所以嘛,看代码喽。
法一:属性方式接收
法二:JavaBean方式接收
法三:ModelDriven方式
三种方式法二、法三用得多。
这里分别用:LoginAction、LoginAction2、LoginAction3来实现三种接收参数的方式,对应的页面是:login.jsp、login2.jsp、login3.jsp
struts.xml不在重复,请读者参考创建Action的struts.xml配置。3中方法都可以输出username、pwd、及age。
1、法一:属性方式接收
LoginAction
package com.hmc.struts2.action; /** * User:Meice * 2017/10/29 */ public class LoginAction { private String username; private String pwd; private int age; public String login() { System.out.println("登陆了..."); System.out.println("用户名:"+username+"用户密码: "+pwd+"年龄: "+age); return "success"; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
login_success.jsp
三种方法共用此界面。
<%-- User: Meice Date: 2017/10/29 Time: 16:19 --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登陆成功</title> </head> <body> 恭喜?登陆成功! </body> </html>
login.jsp
<%-- User: Meice Date: 2017/10/29 Time: 16:19 --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>用户登陆</title> </head> <body> <form action="login2" method="post"> <table> <tr> <td>用户名</td> <td><input type="text" name="username"></td> </tr> <tr> <td>密码</td> <td><input type="password" name="pwd"></td> </tr> <tr> <td>年龄</td> <td><input type="text" name="age"></td> </tr> <tr> <td colspan="2"><input type="submit" value="确认"/></td> </tr> </table> </form> </body> </html>
2、法一:JavaBean方式接收
这个最主要的特点是,把页面参数封装到一个实体类中,页面通过对象.属性来建立联系。
LoginAction2
package com.hmc.struts2.action; import com.hmc.struts2.model.User; /** * User:Meice * 2017/10/29 */ public class LoginAction2 { private User user; public String login2() { System.out.println(user); //User{username='小美', pwd='123', age=0} return "success"; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
配置struts.xml(见最上面)
login2.jsp
<%-- User: Meice Date: 2017/10/29 Time: 16:19 --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>用户登陆</title> </head> <body> <form action="login2" method="post"> <table> <tr> <td>用户名</td> <%--这里user要用action里面定义的形参--%> <td><input type="text" name="user.username"></td> </tr> <tr> <td>密码</td> <td><input type="password" name="user.pwd"></td> </tr> <tr> <td>年龄</td> <td><input type="text" name="user.age"></td> </tr> <tr> <td colspan="2"><input type="submit" value="确认"/></td> </tr> </table> </form> </body> </html>
注意,页面name=”user.username”
3、法三:ModelDriven方式
LoginAction3
package com.hmc.struts2.action; import com.hmc.struts2.model.User; import com.opensymphony.xwork2.ModelDriven; /** * User:Meice * 2017/10/29 */ public class LoginAction3 implements ModelDriven<User> { private User user; public User getModel() { if(user ==null) { user = new User(); } return user; } public String login3() { System.out.println(user); return "success"; } }
配置struts.xml(见最上面)
login3.jsp
<%-- User: Meice Date: 2017/10/29 Time: 16:19 --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>用户登陆</title> </head> <body> <form action="login3" method="post"> <table> <tr> <td>用户名</td> <%--这里user要用action里面定义的形参--%> <td><input type="text" name="username"></td> </tr> <tr> <td>密码</td> <td><input type="password" name="pwd"></td> </tr> <tr> <td>年龄</td> <td><input type="text" name="age"></td> </tr> <tr> <td colspan="2"><input type="submit" value="确认"/></td> </tr> </table> </form> </body> </html>
这里页面属性可以恢复我们之前的习惯了。
使用ModelDriven,要news这个对象。
四、总结
1、Struts2给我们提供了获取参数的一个全新的视角:不用req.getParameter()等,页面跳转等都是不同于Servlet的全新方式;
2、web.xml中的过滤器,不用我们处理中文编码问题啦;
3、没有对比,就木有伤害。所以,博观而约取,项目中灵活运用即可。
好了,开饭喽!下期再会!
相关文章推荐
- JavaWeb -- Struts2 验证框架
- JavaWeb框架_Struts2_(六)----->Struts2的输入校验
- Java Web框架-----------------------struts2(官网教程版HelloWorld)
- JavaWeb——SSJDBC(struts2,spring,jdbc)框架,正向工程
- Java Web中选择Struts2,Spring等框架的分析
- 整合框架 javaweb开发平台ssmy_m(与代码生成) java struts2 mybatis spring maven jquery
- JavaWeb -- Struts2 验证框架
- 【java-web框架】struts2复习
- JavaWeb框架_Struts2_(一)----->Struts2 框架入门
- 集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery
- Java_Web三大框架之Struts2
- JAVA_WEB项目之Struts2、Spring和Hibernate三大框架的整合
- JAVA_WEB Struts2学习:使用验证框架进行校验JSP页面元素 反编译工具的配置 Strtuts2 国际化学习
- 【Java Web框架篇二】Struts2入门+实例讲解
- java web 框架之struts2
- JavaWeb框架_Struts2_(二)----->Struts2的核心配置
- JavaWeb框架_Struts2_(五)----->Struts2的标签库
- JavaWeb框架之Struts2 ---- 系列学习
- JavaWeb框架_Struts2_(三)---->Struts2的拦截器
- Java Web开发框架的未来为什么是Struts2?(