上篇推薦: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展現數據
下面我們看下,需要的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=登陸
登陸界面

登陸成功

登陸失敗

