【java开发系列】—— struts2简单入门示例
2016-04-15 15:46
766 查看
原文:【java开发系列】—— struts2简单入门示例上篇推荐:JDK安装
前言
最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的。
struts2其实就是为我们封装了servlet,简化了jsp跳转的复杂操作,并且提供了易于编写的标签,可以快速开发view层的代码。
过去,我们用jsp和servlet搭配,实现展现时,答题的过程是:
1 jsp出发action
2 servlet接受action,交给后台class处理
3 后台class跳转到其他的jsp,实现数据展现
现在有了struts2,实现过程变为
1 jsp出发action
2 struts2拦截请求,调用后台action
3 action返回结果,由不同的jsp展现数据
![](https://images0.cnblogs.com/blog/449064/201409/081956167151139.png)
前面两个是apache commons的jar包,暂且忽略
freemarker提供了另一种展现方式
ognl提供了OGNL表达式
struts2-core提供struts2核心包
xwork-core由于struts2很多事基于webwork的,因此也需要这个的核心包
我们提供了三个jsp
这里还要两个国际化文件,
![](https://images0.cnblogs.com/blog/449064/201409/082017231682097.png)
![](https://images0.cnblogs.com/blog/449064/201409/082017378714072.png)
前言
最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的。
struts2其实就是为我们封装了servlet,简化了jsp跳转的复杂操作,并且提供了易于编写的标签,可以快速开发view层的代码。
过去,我们用jsp和servlet搭配,实现展现时,答题的过程是:
1 jsp出发action
2 servlet接受action,交给后台class处理
3 后台class跳转到其他的jsp,实现数据展现
现在有了struts2,实现过程变为
1 jsp出发action
2 struts2拦截请求,调用后台action
3 action返回结果,由不同的jsp展现数据
下面我们看下,需要的jar包
![](https://images0.cnblogs.com/blog/449064/201409/081956167151139.png)
前面两个是apache commons的jar包,暂且忽略
freemarker提供了另一种展现方式
ognl提供了OGNL表达式
struts2-core提供struts2核心包
xwork-core由于struts2很多事基于webwork的,因此也需要这个的核心包
我们提供了三个jsp
登陆界面login.jsp
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title><s:text name="loginPage"/></title> </head> <body> <s:form action="login"> <s:textfield name="username" key="user"/> <s:textfield name="password" key="pass"/> <s:submit key="login"/> </s:form> </body> </html>
登陆成功界面welcome.jsp
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title><s:text name="succPage"/></title> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> </head> <body> <s:text name="succTip"> <s:param>${sessionScope.user}</s:param> </s:text><br/> </body> </html>
登陆失败界面error.jsp
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title><s:text name="errorPage"/></title> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> </head> <body> <s:text name="failTip"/> </body> </html>
当login.jsp触发action时,就会向后抬发送login.action的请求,这个请求被后台拦截,交给struts.xml中配置的action处理
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <!-- 指定全局国际化资源文件 --> <constant name="struts.custom.i18n.resources" value="mess"/> <!-- 指定国际化编码所使用的字符集 --> <constant name="struts.i18n.encoding" value="GBK"/> <!-- 所有的Action定义都应该放在package下 --> <package name="test" extends="struts-default"> <action name="login" class="com.test.action.LoginAction"> <result name="error">/error.jsp</result> <result name="success">/welcome.jsp</result> </action> </package> </struts>
下面是LoginAction的代码,可以看到成功登陆后,程序把username写入session中。以便于我们在welcome.jsp中利用${sessionScope.user}取得名字
package com.test.action; import com.opensymphony.xwork2.ActionContext; 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() throws Exception { if (getUsername().equals("xingoo") && getPassword().equals("123")) { ActionContext.getContext().getSession().put("user", getUsername()); return SUCCESS; }else{ return ERROR; } } }
这里还要两个国际化文件,
mess.properties
loginPage=loginPage errorPage=errorPage succPage=succPage failTip=sorry,login failed succTip=welcome{0},login success user=username pass=password login=login
mess_zh_CN.properties
loginPage=登陆界面 errorPage=失败界面 succPage=成功界面 failTip=对不起,您不能登录! succTip=欢迎,{0},您已经登录! user=用户名 pass=密 码 login=登陆
登陆界面
![](https://images0.cnblogs.com/blog/449064/201409/082017231682097.png)
登陆成功
![](https://images0.cnblogs.com/blog/449064/201409/082017378714072.png)
登陆失败
![](https://images0.cnblogs.com/blog/449064/201409/082017472317478.png)
相关文章推荐
- 在 java 中创建自己的 shapes +java实现边框
- SpringMVC 基础教程 helloworld
- [java]java字符串如何保存到数据库日期类型的列?
- 【Java集合源码剖析】Vector源码剖析
- [疯狂Java]JDBC:ResultSet的升级RowSet、离线的CachedRowSet、离线分页查询
- Java 4000 static关键字
- Synch4j使用指南
- REST实现(Spring下实现+JDK6机制实现)
- Struts中防止表单重复提交
- java常用sql处理函数类
- HBASE遇到的java.lang.OutOfMemoryError: unable to create new native thread解决方法
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- java类代码执行顺序
- Java中集合类的关系图谱
- JAVA+ffmpeg+mencoder转换视频
- Gaining Access to the Spring Context in Non Spring Managed Classes
- java poi下载地址
- Windows7部署Android开发环境傻瓜式教程(Eclipse+ADT) (转)
- Java 数据存储
- Java中接口和抽象类的区别及使用的场合