【java开发系列】—— struts2简单入门示例

上篇推荐:JDK安装html

前言java

  最近正好有时间总结一下,过去的知识历程,虽然说东西都是入门级的,高手确定是不屑一顾了,可是对于初次涉猎的小白们,仍是能够提供点参考的。web

  struts2其实就是为咱们封装了servlet,简化了jsp跳转的复杂操做,而且提供了易于编写的标签,能够快速开发view层的代码。apache

  过去,咱们用jsp和servlet搭配,实现展示时,答题的过程是:session

  1 jsp出发actionjsp

  2 servlet接受action,交给后台class处理ui

  3 后台class跳转到其余的jsp,实现数据展示this

  如今有了struts2,实现过程变为编码

  1 jsp出发actionspa

  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=登录

  登录界面

 

 

 

  登录成功

 

  登录失败