使用Struts2框架实现一个登录子系统,具体要求如下:
创建项目并配置一个Struts2框架
1.创建项目
File->new->Dynamic Web Project->给web项目命名(HelloStruts2Action)->next->next->勾选Generate web.xml deployment descriptor->finish
2.web.xml配置
web.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>797_1</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*
3.导入jar包jar包下载
建议下载struts-2.5.22-min-lib.zip (min是此版本的最小核心依赖包)
将下载好的文件解压后打开找到lib文件夹,将lib文件夹里的8个jar包
复制粘贴到所创建项目(eclipse代码存储空间里)的文件夹下WebContent/WEB-INF/lib里,最后返回eclipse右击项目Refresh(F5)
4.struts2配置
在src目录下右键new一个struts.xml文件
struts.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="study"/>
<constant name="struts.i18n.encoding" value="UTF-8" /> <!--国际化配置-->
<package name="default" namespace="/" extends="struts-default">
<action name="LoginAction" class="com.lx.action.LoginAction">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>
<action name="ChangelanAction" class="com.lx.action.ChangelanAction">
<result name="success">login.jsp</result>
</action>
</package>
</struts>
题目的实现
项目结构
1.编写三个jsp页面(login.jsp、success.jsp、error.jsp)
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%><!-- Struts2引入仅有的一个标签库s -->
<!-- 不加此句会出现Unknown tag (s:text).警告 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆</title>
</head>
<body>
<form action="LoginAction" method="post" >
<!--
用户名:<input type="text" name="userName" required><br>
密码:<input type="password" name="passWord" required><br>
<input type="submit" value="登录">
-->
<s:text name="form.username"/> //国际化
<input type="text" name="userName" required><br>
<s:text name="form.password"/>
<input type="password" name="passWord" required><br>
<input type="submit" value=". submit" />"/><br>
</form>
<a href="ChangelanAction?request_locale=zh_CN">简体中文</a>
<a href="ChangelanAction?request_locale=en_US">English</a>
</body>
</html>
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%> <!-- 引入struts2的标签库 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>欢迎页面</title>
</head>
<body>
<s:property value="userName"/>,您好!欢迎登陆
<!--使用sturts2标签s:property访问action值栈中的普通属性-->
</body>
</html>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆失败</title>
</head>
<body>
用户名或密码错误,请重新登录!
<h1><a href="login.jsp">点击跳转至登陆页面……</a></h1>
</body>
</html>
2.编写2个Action页面(LoginAction、ChangelanAction)
LoginAction.java
package com.lx.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
/*值栈:页面可以直接获取*/
String userName;
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()
{
if(userName.equals("admin") && passWord.equals("12345"))
return "success";
else
return "error";
}
}
ChangelanAction.java
借鉴代码来源
package com.lx.action;
import java.util.Locale;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class ChangelanAction extends ActionSupport{
public String execute() throws Exception {
//获得本地默认的语言环境
Locale locale=Locale.getDefault();
//存入到一个session变量中。"WW-TRANS-I18N-LOCALE"为固定写法
ActionContext.getContext().getSession().put("WW-TRANS-I18N-LOCALE", locale);
return SUCCESS;
}
}
3.编写两个国际化页面(study_en_US.properties、study_zh_CN.properties)
study_en_US.properties
form.username=userName:
form.password=passWord:
form.submit=submit
study_zh_CN.properties(等号后输入汉字自动转换成对应UTF-8编码)
(如果不行的话点击properties然后输入汉字,source里的代码就会自动转换成汉字对应UTF-8编码)
form.username=\u7528\u6237\u540D:
form.password=\u5BC6\u7801:
form.submit=\u63D0\u4EA4