【java开发系列】—— struts2简单入门示例
前言
最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的。
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包
前面两个是apache commons的jar包,暂且忽略
freemarker提供了另一种展现方式
ognl提供了OGNL表达式
struts2-core提供struts2核心包
xwork-core由于struts2很多事基于webwork的,因此也需要这个的核心包
我们提供了三个jsp
登陆界面login.jsp
1 <%@ page language="java" contentType="text/html; charset=GBK"
2 pageEncoding="GBK"%>
3 <%@taglib prefix="s" uri="/struts-tags"%>
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=GBK">
7 <title><s:text name="loginPage"/></title>
8 </head>
9 <body>
10 <s:form action="login">
11 <s:textfield name="username" key="user"/>
12 <s:textfield name="password" key="pass"/>
13 <s:submit key="login"/>
14 </s:form>
15 </body>
16 </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处理
1 <?xml version="1.0" encoding="GBK"?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
4 "http://struts.apache.org/dtds/struts-2.1.7.dtd">
5 <struts>
6 <!-- 指定全局国际化资源文件 -->
7 <constant name="struts.custom.i18n.resources" value="mess"/>
8 <!-- 指定国际化编码所使用的字符集 -->
9 <constant name="struts.i18n.encoding" value="GBK"/>
10 <!-- 所有的Action定义都应该放在package下 -->
11 <package name="test" extends="struts-default">
12 <action name="login" class="com.test.action.LoginAction">
13 <result name="error">/error.jsp</result>
14 <result name="success">/welcome.jsp</result>
15 </action>
16 </package>
17 </struts>
下面是LoginAction的代码,可以看到成功登陆后,程序把username写入session中。以便于我们在welcome.jsp中利用${sessionScope.user}取得名字
1 package com.test.action;
2
3 import com.opensymphony.xwork2.ActionContext;
4 import com.opensymphony.xwork2.ActionSupport;
5
6 public class LoginAction extends ActionSupport {
7 private String username;
8 private String password;
9
10 public String getUsername() {
11 return username;
12 }
13
14 public void setUsername(String username) {
15 this.username = username;
16 }
17
18 public String getPassword() {
19 return password;
20 }
21
22 public void setPassword(String password) {
23 this.password = password;
24 }
25
26 public String execute() throws Exception {
27 if (getUsername().equals("xingoo") && getPassword().equals("123")) {
28 ActionContext.getContext().getSession().put("user", getUsername());
29 return SUCCESS;
30 }else{
31 return ERROR;
32 }
33 }
34 }
这里还要两个国际化文件,
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=登陆
登陆界面
登陆成功
登陆失败
from: http://www.cnblogs.com/xing901022/p/3961661.html
【java开发系列】—— struts2简单入门示例的更多相关文章
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- Web Service简单入门示例
Web Service简单入门示例 我们一般实现Web Service的方法有非常多种.当中我主要使用了CXF Apache插件和Axis 2两种. Web Service是应用服务商为了解决 ...
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- Velocity魔法堂系列一:入门示例(转)
Velocity魔法堂系列一:入门示例 一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本 ...
- Flask开发系列之快速入门
Flask开发系列之快速入门 文档 一个最小的应用 调试模式 路由 变量规则 构造 URL HTTP 方法 静态文件 模板渲染 访问请求数据 环境局部变量 请求对象 文件上传 Cookies 重定向和 ...
- Velocity魔法堂系列一:入门示例
一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...
- Java反射01 : 概念、入门示例、用途及注意事项
1.Java反射定义 本文转载自:https://blog.csdn.net/hanchao5272/article/details/79360452 官方定义如下: Reflection enabl ...
- 【java开发系列】—— JDK安装
前言 作为一个java开发者,安装JDK是不可避免的,但是配置路径却总是记不住,百度也有很多参考例子.这里仅仅当做以后参考的笔记记录. 说到JDK,就不得不提JRE.他们到底是什么呢? 通常我们进行j ...
- Java开发系列-文件上传
概述 Java开发中文件上传的方式有很多,常见的有servlet3.0.common-fileUpload.框架.不管哪种方式,对于文件上传的本质是不变的. 文件上传的准备 文件上传需要客户端跟服务都 ...
随机推荐
- Codeforces Round #207 (Div. 1) A. Knight Tournament(STL)
脑子又卡了...来一发set的,STL真心不熟. #include <stdio.h> #include <string.h> #include <iostream> ...
- 【JAVA】Spring 数据源配置整理
在Spring中,不但可以通过JNDI获取应用服务器的数据源,也可以直接在Spring容器中配置数据源,此外,还可以通过代码的方式创建一个数据源,以便进行无依赖的单元测试. 配置数据源 ...
- 【Oracle】ORA-28000: the account is locked-的解决办法
ORA-28000: the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择myjob, ...
- SolrCloud 5.x 集群部署方法
CentOS下安装Solr5.3 http://www.centoscn.com/image-text/install/2015/0918/6190.html solr5.3.1 集群服务搭建 ...
- Func<T>与Action<T>委托泛型介绍:转
.Net 3.5之后,微软推出了Func<T>与Action<T>泛型委托.进一步简化了委托的定义. Action<T>委托主要的表现形式如下: public de ...
- About_AJAX_03
以为AJAX只可以获取一个值呢,原来也是可以拼接的: function sendTopic(){ if(window.ActiveXObject){ xmlHttp = new ActiveXObje ...
- [LintCode] Pow(x, n) 求x的n次方
Implement pow(x, n). Notice You don't need to care about the precision of your answer, it's acceptab ...
- java ReentrantLock可重入锁功能
1.可重入锁是可以中断的,如果发生了死锁,可以中断程序 //如下程序出现死锁,不去kill jvm无法解决死锁 public class Uninterruptible { public static ...
- Hadoop.2.x_网站PV示例
一.网站基本指标(即针对于网站用户行为而产生的日志中进行统计分析) 1. PV:网页浏览量(Page View页面浏览次数,只要进入该网页就产生一条记录,不限IP,统计点每天(较多)/每周/每月/.. ...
- crontab的坑
1. 命令 全路径 (eg:which mysql) 2.执行脚本 (脚本中加上#!/bin/bash) eg: /bin/bash script.sh 3. 输出信息(>>) 使用全 ...