【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=登陆
复制代码

  登陆界面

  登陆成功

  登陆失败

本文转自博客园xingoo的博客,原文链接:【java开发系列】—— struts2简单入门示例,如需转载请自行联系原博主。
相关文章
|
16天前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
212 0
|
24天前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
24天前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
43 0
|
24天前
|
Java API 数据库
2025 年最新 Java 实操学习路线,从入门到高级应用详细指南
2025年Java最新实操学习路线,涵盖从环境搭建到微服务、容器化部署的全流程实战内容,助你掌握Java 21核心特性、Spring Boot 3.2开发、云原生与微服务架构,提升企业级项目开发能力,适合从入门到高级应用的学习需求。
314 0
|
1月前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
311 3
|
1月前
|
监控 Java API
2025 年全新出炉的 Java 学习路线:从入门起步到实操精通的详细指南
2025年Java学习路线与实操指南,涵盖Java 21核心特性、虚拟线程、Spring Boot 3、微服务、Spring Security、容器化部署等前沿技术,助你从入门到企业级开发进阶。
261 0
|
2月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
230 1
|
2月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
2月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
2月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
300 3

热门文章

最新文章