SSH-struts2入门实例
2015-06-30 21:13
671 查看
struts2是对于MVC思想的一种实现,在学习struts2时与.net中的mvc去对比发现他们很相似。struts2也有自己的控制器,自己理解struts2中的控制器就是带有Action的方法。
实例是登陆时将登陆输入的内容传值到Action,通过Action去跳转到另外一个窗体。
login.jsp,用于提供输入框以及指定Action名称(login)。
web.xml设置一个拦截器。将请求纳入到过滤器管辖。
struts.xml,自己感觉它更像是一个提供地图的地方,找到Action请求的名称(login),然后就可以跳转到指定的后台的类中;同时也在配置文件中配置了当返回success时需要跳转的页面。
LoginAction.jsp提供了execute方法,当页面跳转到后台时会寻找此方法,进行进一步处理,这里可以和.net中控制器去对比,特别像。
result.jsp,指定的执行execute方法后,如果返回sucess跳转到的页面。
实例的流程:
1.用户单击表单login.jsp 请求资源”login”
2.请求路径匹配了web.xml中的拦截器/*,
3.纳入到过滤器org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter的管辖中。
4.运行到struts.xml中,寻找action中name为”login”的。action可能有多个。
5.实例化对应action的类,调用各种set方法,将用户提交的表单set给成员变量,接着执行execute方法,返回字符串success
6.返回的字符串success和struts.xml中action下的result中字符串进行比较,找到一样的字符串,转到指定的页面
7.利用requestScope取出相应的值
实例是登陆时将登陆输入的内容传值到Action,通过Action去跳转到另外一个窗体。
login.jsp,用于提供输入框以及指定Action名称(login)。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <form action="login"> username:<input tyep="text" name="username"><br> password:<input type="password" name="password"><br> <input type="submit" value="submit"> </form> </body> </html>
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"> <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>
struts.xml,自己感觉它更像是一个提供地图的地方,找到Action请求的名称(login),然后就可以跳转到指定的后台的类中;同时也在配置文件中配置了当返回success时需要跳转的页面。
<?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> <package name="struts2" extends="struts-default"> <action name="login" class="com.syq.struts2.LoginAction" method="myExecute"> <result name="success">/result.jsp</result> </action> </struts>
LoginAction.jsp提供了execute方法,当页面跳转到后台时会寻找此方法,进行进一步处理,这里可以和.net中控制器去对比,特别像。
package com.syq.struts2; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ 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(){ return SUCCESS; } }
result.jsp,指定的执行execute方法后,如果返回sucess跳转到的页面。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> username:${requestScope.username}<br> password:${requestScope.password}<br> </body> </html>
实例的流程:
1.用户单击表单login.jsp 请求资源”login”
2.请求路径匹配了web.xml中的拦截器/*,
3.纳入到过滤器org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter的管辖中。
4.运行到struts.xml中,寻找action中name为”login”的。action可能有多个。
5.实例化对应action的类,调用各种set方法,将用户提交的表单set给成员变量,接着执行execute方法,返回字符串success
6.返回的字符串success和struts.xml中action下的result中字符串进行比较,找到一样的字符串,转到指定的页面
7.利用requestScope取出相应的值
相关文章推荐
- java多线程之CyclicBarrier简单用法
- JAVA中的内部类--匿名内部类
- 命令行状态下编译Java程序
- 在MAC上查找和设置$JAVA_HOME
- SpringMVC基于浏览器国际化实现
- java 多线程之Semaphore互斥类的用法
- 深入理解JavaWeb技术内幕(一)
- Pydev for eclipse 安装及配置
- Java GC
- java张集合的继承结构图Map部分
- JAXB 实现JavaBean与xml互转(一)
- java中集合的继承结构图collection部分
- Java的反射
- 提高代码性能效率总结(一)--Java
- Activiti Spring集成Demo
- JDK和JRE的区别
- java ReadWriteLock用法示例
- 如何调试JDK源码
- 我们应该怎样理解:Java中的 “.*;” ???
- MyEclipse + Maven开发Web工程的详细配置过程