struts2框架搭建
2015-09-20 22:42
351 查看
最近在学习struts的使用,这里我也是第一次使用,所以我们在搭建之前先简单的介绍一下struts2
Struts2介绍
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的 体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts
2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
框架搭建
我用的是myEclipse搭建的,所以我们首先要创建一个web project,然后我就用一个登陆的小例子来为大家创建框架。 首先我们是一个登陆的框架,所以首先我们需要一个登陆的页面,那么就先创建一个JSP页面,我们命名为login.jsp,里边我们只需要在body里边添加如下代码:
我们登陆,输入完以后当然是需要把数据传输到后台,那么启动的时候我们当然是要运用这个框架的了,那么我就需要如下的一段代码来告诉Tomcat,启动的时候把这个加载了,而这个类是struts对程序启动准备和执行的一个过滤器,而过滤的对象是所有的类。
上边话的意思是在包下,有一个类,他的名称死com.tgb.struts2.LoginAction,别名是login,这个类执行成功的结果,如果是success,那么他就跳转到result.jsp页面。
所以我们再创建一个上边说的类
这个类就是struts.xml配置文件下制定的那个类,从他的编写我们可以看出,他主要是一些get,set方法,和一个execute的方法,而关键就是这个execute,他的返回值,就是咱们的业务逻辑的返回值,如果返回了一个success,那么就会按照struts.xml配置的一样跳转到result.jsp。
那我们发现如果从前台传到后台是一些字符串,我们怎么把他们转化车我们要的用户实体呢,这就需要一个转化器,这个转化器可以是java自带的一个转化器,也可以是struts给的转化器,下边我们都实践一下。
第一种:自带的转化器
第二种:利用struts的转化器
当然这两种都这样写还不行,还需要一个配置,来告诉我的程序,我的这个转换器要转换成Action中的哪个实体,例如我上边的Action中申明private User user,那么我我就需要在一个名称为UserActionConversion.properties的文件内加上这句话,那么他就回给我转化,如:user=com.tgb.bean.converter.UserConverter
既然我们是面向对象开发,免不了需要实体
当然我这个例子没有链接数据库,如果那样的话,就需要加一个业务逻辑成层和数据访问层了。
其实我们为什么要把一个简单的例子用这么相对复杂的一个框架呢,就好像以前我也不懂我做.net的时候为什么要用MVC,一个三层难道还不够吗,可是在我们不断的添加代码的时候会发现,我们的三层也不太够用了,所以我们才有了这个Struts2的框架,她其实就是一个MVC的框架,view就是jsp,用来显示数据,讲数组整合成html页面,而Action,就是Controll,他对整个程序是一个承上启下的作用,而Moudle是java里的bean,就是实体模型,用来实现我们的面向对象的思想。
对于MVC我不说太多了,我又一片博客说的就是MVC,大家可以阅读一下。/article/2124350.html
Struts2介绍
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的 体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts
2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
框架搭建
我用的是myEclipse搭建的,所以我们首先要创建一个web project,然后我就用一个登陆的小例子来为大家创建框架。 首先我们是一个登陆的框架,所以首先我们需要一个登陆的页面,那么就先创建一个JSP页面,我们命名为login.jsp,里边我们只需要在body里边添加如下代码:
<span style="font-size:14px;"><form action="login"> username:<input type="text" name="username"> <br> password:<input type="text" name="password"> <br> <input type="submit" value="submit"> </form></span>
我们登陆,输入完以后当然是需要把数据传输到后台,那么启动的时候我们当然是要运用这个框架的了,那么我就需要如下的一段代码来告诉Tomcat,启动的时候把这个加载了,而这个类是struts对程序启动准备和执行的一个过滤器,而过滤的对象是所有的类。
<span style="font-size:14px;"> <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></span>既然用的是struts框架,我们就需要一个struts.xml文件,来配置我们的Action。路径在src目录下
<span style="font-size:14px;"><package name="struts2" extends="struts-default"> <action name="login" class="com.tgb.struts2.LoginAction" method="myExecute"> <result name="success" >/result.jsp</result> </action> </package></span>
上边话的意思是在包下,有一个类,他的名称死com.tgb.struts2.LoginAction,别名是login,这个类执行成功的结果,如果是success,那么他就跳转到result.jsp页面。
所以我们再创建一个上边说的类
<span style="font-family:SimSun;font-size:14px;">public class LoginAction { private String username; private String password; private int age; public int getAge() { return age; } private Date date; public void setAge(int age) { this.age = age; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } 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"; } }</span>
这个类就是struts.xml配置文件下制定的那个类,从他的编写我们可以看出,他主要是一些get,set方法,和一个execute的方法,而关键就是这个execute,他的返回值,就是咱们的业务逻辑的返回值,如果返回了一个success,那么就会按照struts.xml配置的一样跳转到result.jsp。
那我们发现如果从前台传到后台是一些字符串,我们怎么把他们转化车我们要的用户实体呢,这就需要一个转化器,这个转化器可以是java自带的一个转化器,也可以是struts给的转化器,下边我们都实践一下。
第一种:自带的转化器
<span style="font-family:SimSun;font-size:14px;"><span style="font-size:18px;">public class UserConverter extends DefaultTypeConverter { @Override public Object convertValue(Map context, Object value, Class toType) { if(User.class == toType) //从页面向后台对象转换 { String[] str = (String[])value; String firstValue = str[0]; StringTokenizer st = new StringTokenizer(firstValue,";"); //获取用户名和密码 String username = st.nextToken(); String password = st.nextToken(); User user = new User(); user.setUsername(username); user.setPassword(password); return user; } else if(String.class == toType) //从后台对象向页面转换 { User user = (User)value; String username = user.getUsername(); String password = user.getPassword(); String userInfo = "username: " + username + ",password: " + password; return userInfo; } return null; } } </span></span>
第二种:利用struts的转化器
<span style="font-family:SimSun;font-size:14px;">public class UserConverter2 extends StrutsTypeConverter { @Override public Object convertFromString(Map context, String[] values, Class toClass) { User user = new User(); String value = values[0]; StringTokenizer st = new StringTokenizer(value,";"); user.setUsername(st.nextToken()); user.setPassword(st.nextToken()); return user; } @Override public String convertToString(Map context, Object o) { User user = (User)o; String username = user.getUsername(); String password = user.getPassword(); String userInfo = "username: " + username + ", password" + password; return userInfo; } } </span>
当然这两种都这样写还不行,还需要一个配置,来告诉我的程序,我的这个转换器要转换成Action中的哪个实体,例如我上边的Action中申明private User user,那么我我就需要在一个名称为UserActionConversion.properties的文件内加上这句话,那么他就回给我转化,如:user=com.tgb.bean.converter.UserConverter
既然我们是面向对象开发,免不了需要实体
<span style="font-family:SimSun;font-size:14px;">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; } } </span>
当然我这个例子没有链接数据库,如果那样的话,就需要加一个业务逻辑成层和数据访问层了。
其实我们为什么要把一个简单的例子用这么相对复杂的一个框架呢,就好像以前我也不懂我做.net的时候为什么要用MVC,一个三层难道还不够吗,可是在我们不断的添加代码的时候会发现,我们的三层也不太够用了,所以我们才有了这个Struts2的框架,她其实就是一个MVC的框架,view就是jsp,用来显示数据,讲数组整合成html页面,而Action,就是Controll,他对整个程序是一个承上启下的作用,而Moudle是java里的bean,就是实体模型,用来实现我们的面向对象的思想。
对于MVC我不说太多了,我又一片博客说的就是MVC,大家可以阅读一下。/article/2124350.html
相关文章推荐
- Java连接IBM MQ
- Caused by: java.lang.ClassNotFoundException: org.jbpm.pvm.internal.processengine.SpringHelper
- Java 线程暂停与继续
- java字符串的各种编码转换
- hbase集群在启动的时候找不到JAVA_HOME的问题
- 关于文件浏览的自定义Web服务器
- spring security 中spring bean组成的过滤器链如何初始化的
- Java 并发同步器之CountDownLatch、CyclicBarrier
- Java enum的用法详解
- Spring
- Java语句——for循环
- java中的内部类
- Java Servlet系列之Servlet生命周期
- java实现多继承
- java实现九九乘法表,用不同的数据类型
- ubuntu解决eclipse中logcat只显示level栏
- 第2章 Java内存区域与内存溢出异常
- Java常用类
- 解决在Xamarin中"Java.exe"已退出,代码为1
- springAOP