Struts2入门的第一个应用
今天开始学习struts2技术,现在struts2的技术已经超过了struts1,所以本人就没有学习struts1了,当然这个肯定不会影响我们后面的学习,先来看一下工程的目录结构:
说明:
queryAction.java就是struts2中的Action类:代码如下:
package com.struts.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.struts.bean.UserBean;
import com.struts.service.UserService; public class queryAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private UserBean userBean = new UserBean();
private String id; public String getId(){
return id;
} public void setId(String id){
this.id = id;
} public UserBean getUserBean() {
return userBean;
} public void setUserBean(UserBean userBean) {
this.userBean = userBean;
} //struts2中继承ActionSupport类,重写execute方法,这里的返回值是一个字符串类型,具体的说明到后面再说:
public String execute() throws Exception {
try{
//将查询结果放到request域中
HttpServletRequest request = ServletActionContext.getRequest();
UserService userService = new UserService();
request.setAttribute("userBean", userService.queryUser(id));
//setUserBean(userDb.queryUser(id));//这行代码相当于上面的三行代码,因为struts2具有属性的注入功能
return "result";
}catch(Exception e){
return "error";
}
} }
下面就是UserBean类:
package com.struts.bean;
public class UserBean {
private String id;
private String name;
private String birth;
private String age;
private String sex;
public UserBean(){
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
这个类没什么好说的了,
再来看一下数据库接口:UserDBImpl
package com.struts.db.impl;
import java.util.ArrayList;
import com.struts.bean.UserBean;
public interface UserDBImpl {
public void init();
public ArrayList<UserBean> getData();
}
然后看一下数据库接口的实现类:
package com.struts.db; import java.util.ArrayList; import com.struts.bean.UserBean;
import com.struts.db.impl.UserDBImpl; public class UserDB implements UserDBImpl{ ArrayList<UserBean> userList = new ArrayList<UserBean>(); public void init(){
for(int i=0;i<10;i++){
UserBean userBean = new UserBean();
userBean.setAge(i+"");
userBean.setBirth(i+"");
userBean.setId(i+"");
userBean.setName("jiangwei");
userBean.setSex("男");
userList.add(userBean);
}
} public ArrayList<UserBean> getData(){
return userList;
} }
这里就没有用数据库来访问数据了,我们是用一个list来模拟数据的
再来看一下业务层的接口:
package com.struts.service.impl;
import com.struts.bean.UserBean;
public interface UserServiceImpl {
public UserBean queryUser(String id);
}
业务层接口的实现类:
package com.struts.service;
import java.util.ArrayList;
import com.struts.bean.UserBean;
import com.struts.db.UserDB;
import com.struts.db.impl.UserDBImpl;
import com.struts.service.impl.UserServiceImpl;
public class UserService implements UserServiceImpl{
public UserBean queryUser(String id){
UserDBImpl userDb = new UserDB();
userDb.init();
ArrayList<UserBean> userList = userDb.getData();
if(userList == null){
return null;
}
if(id == null){
return null;
}
for(int i=0;i<userList.size();i++){
if(id.equals(userList.get(i).getId())){
return userList.get(i);
}
}
return null;
}
}
主要就是通过用户的id来查询用户的所有信息
这样分层的结构,看上去一点都不乱,很清晰,而且各个层之间的访问用接口来实现,降低了各个类之间的耦合性。
下面就来看看配置了:
在项目src目录下新建一个struts.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts" extends="struts-default">//为action指定报名
<action name="query" class="com.struts.action.queryAction">//为action指定名称
<result name="result">/success.jsp</result>//action访问成功的跳转页面
<result name="error">/error.jsp</result>//action访问错误的跳转页面
</action>
</package>
</struts>
注意:
1. 这里的action:name=“query"这个是给action起一个名字,在后面的jsp页面中要用到
2. 这里的result:name定义的是上面的queryAction类中的execute方法的不同返回值,跳转到不同的页面,所以那个返回字段就决定了跳转的页面,
再来看一下给struts2配置全局的信息,在web.xml中配置:
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置struts2的过滤器和地址映射
在来看一下jsp页面的内容:
queryUser.jsp内容如下:
<body>
<s:form action="query">
<s:textfield label="书名" name="id"></s:textfield>
<s:submit value="查询"></s:submit>
</s:form>
</body>
注意:这里用到了struts2的标签库
1. 这里的action="query"中的名称必须和struts.xml文件中action:name的名称一样,就是表单跳转的action
2. 这里的name="id"中的id必需是queryAction中的id属性,在queryAction中id的属性值为空的,这个就是struts2自动的属性值注入功能
看一下成功跳转的页面success.jsp:
<body>
id:<c:out value="${userBean.id}"></c:out>
name:<c:out value="${userBean.name}"></c:out>
sex:<c:out value="${userBean.sex}"></c:out>
age:<c:out value="${userBean.age}"></c:out>
birth:<c:out value="${userBean.birth}"></c:out>
</body>
这个是用jstl标签输出用户的所有信息,这里userBean是存放在request域中的对象,在queryAction类中进行存放的.
然后不要忘了导入struts2所需的jar包,上面的图片上有所有的jar包
这样第一个struts应用就配置好了,在浏览器中输入:http://localhost:8080/..../queryUser.jsp就可以访问了。
总结:这个例子只是带我们进入struts2的世界的起点,struts2内部的更多的应用后续还需讲解
Struts2入门的第一个应用的更多相关文章
- struts2入门第一天----------配置环境
放假之后有空就开始走上了三大框架的学习.第一个选择的框架是struts2.首先第一步当然是环境的配置.去apache官网把struts2下载下来.然后在自己的开发工具下创建一个web项目.在lib文件 ...
- Struts2 入门
一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...
- Struts2入门3 深入学习
Struts2入门3 深入学习 处理结果和异常 前言: Struts学习的差不多了,还有最后的一点就收官了就是结果处理和异常处理.前面学习Struts主要围绕就是Action以及struts.xml配 ...
- Struts2入门2 Struts2深入
Struts2入门2 Struts2深入 链接: http://pan.baidu.com/s/1rdCDh 密码: sm5h 前言: 前面学习那一节,搞得我是在是太痛苦了.因为在Web项目中确实不知 ...
- Struts2入门1 Struts2基础知识
Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...
- struts2入门程序
struts2入门程序 1.示例 搭建编程环境就先不说了,这里假设已经搭建好了编程环境,并且下好了strut2的jar包,接下来程序. 1.1 新建web项目 点击File->New->D ...
- Storm入门之第一章
Storm入门之第一章 1.名词 spout龙卷,读取原始数据为bolt提供数据 bolt雷电,从spout或者其他的bolt接收数据,并处理数据,处理结果可作为其他bolt的数据源或最终结果 nim ...
- struts2框架(1)---struts2入门
struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说 ...
- [java]struts2入门
摘要 本文是struts2入门,配置教程.如何在IntelJ Idea中进行手动配置.在使用idea新建struts2web项目的时候,在下载jar包的过程中,下载失败,没办法就直接手动进行下载jar ...
随机推荐
- [转载]Ubuntu Server下配置UTF-8中文环境
转载自:http://www.gaojinbo.com/ubuntu-server%E4%B8%8B%E9%85%8D%E7%BD%AEutf-8%E4%B8%AD%E6%96%87%E7%8E%AF ...
- 【Luogu】【关卡2-5】字符串处理(2017年10月)
任务说明:这里的字符串处理还会变得更加的有意思,难度也更大.需要好好地思考一下.
- 再也不用字符串拼接dom元素了
<script type="text/html" id="tmp"> <div class="cla"> <u ...
- nginx自动切割日志脚本
#!/bin/bash savepath_log='/data/logs' nglogs='/data/logs' mkdir -p $savepath_log/$(date +%Y)/$(date ...
- leetcode-13双周赛-1256-加密数字
题目描述:编码 方法一: class Solution(object): def encode(self, n): if n == 0: return "" n -= 1 A = ...
- EcShop二次开发学习方法和Ecshop二次开发必备基础
ecshop二次开发学习方法 近年来,随着互联网的发展,电子商务也跟着一起成长,B2B,C2C,B2C的电子商务模式也不断的成熟.这时催生出了众多电子商务相关的php开源产品.B2C方面有Ecshop ...
- IntelliJ IDEA2016.1 + maven 创建java web 项目[转]
最近开始使用idea 来写java项目了,这个很流行,相比Eclipse方便了很多.功能多了,相对应的使用的复杂度也较高了,因为网上很多的使用和创建项目的简单教程,都是基于老版本的,每个新版本都有不一 ...
- 阿里云智能推荐AIRec产品介绍
一.智能推荐(AIRec)简介 AIRec背景介绍 智能推荐(简称AIRec)基于阿里巴巴集团领先的大数据和人工智能技术,结合阿里巴巴在电商.内容.新闻.视频直播和社交等多个行业领域的积累,为全球企业 ...
- Shiro学习(1)简介
1.1 简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比spring Security,可能没有Spring Securi ...
- 基础课(三)实验串入OSPF协议和HSRP协议以及HSRP外部链路跟踪
实验要求1: ,2,3,4分别是vlan10,20,30,40的网关(网关IP-192.168.X.254 /24) 对vlan10做HSRP热备 SW1做主网关,SW2做备份网关 ...