Struts2 – 登录表单入门小Demo
Struts2简介
Struts2
是一个基于MVC设计模式
的Web应用框架
,它本质上相当于一个servlet
,在MVC设计模式
中,Struts2
作为控制器(Controller)来建立模型与视图的数据交互。Struts 2
是Struts
的下一代产品,是在 struts 1
和WebWork
的技术基础上进行了合并的全新的Struts 2
框架。
本次Demo使用Intellij IDEA
+ Gradle
的组合来开发。用到的依赖有:struts2-core-2.5.16
、log4j-core-2.11.0
以及log4j-api-2.11.0
。
Gradle配置
group 'sino_crazy_snail'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'war'
sourceCompatibility = 1.8
buildscript {
ext.struts2_version="2.5.16"
ext.log4j2_version="2.11.0"
}
repositories {
mavenCentral()
}
dependencies {
compile "org.apache.struts:struts2-core:${struts2_version}"
compile "org.apache.logging.log4j:log4j-core:${log4j2_version}"
compile "org.apache.logging.log4j:log4j-api:${log4j2_version}"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
工程目录结构
--src/main
--java
--action
--LoginAction.java
--resources
--log4j2.xml
--struts.xml
--webapp
--WEB-INF
--web.xml
index.jsp
welcome.jsp
--buil.gradle
创建LoginAction类
在src/main/java
下新建package action
,然后创建LoginAction类
:
package action;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
/** * Create by sino_crazy_snail on 2018-03-31 * Email: sino_crazy_snail@qq.com */
public class LoginAction extends ActionSupport {
private String userName, passWord;
/** * A default implementation that does nothing an returns "success". * <p> * <p> * Subclasses should override this method to provide their business logic. * </p> * <p> * <p> * See also {@link Action#execute()}. * </p> * * @return returns {@link #SUCCESS} * @throws Exception can be thrown by subclasses. */
@Override
public String execute() throws Exception {
//SUCCESS是com.opensymphony.xwork2.Action接口定义的一个字符串常量
return SUCCESS;
}
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;
}
}
配置struts.xml和log4j2.xml以及web.xml
在src/main/resource
下新建struts.xml以及log4j2.xml:
struts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<!-- 设置包名为login,该包继承自Struts 2框架的默认包struts-default -->
<package name="login" namespace="/" extends="struts-default">
<!-- 定义名为login的Action,处理类为action.LoginAction.处理结果在welcome.jsp页面显示-->
<action name="login" class="action.LoginAction">
<result>/welcome.jsp</result>
</action>
</package>
</struts>
log4j2.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="com.opensymphony.xwork2" level="debug"/>
<Logger name="org.apache.struts2" level="debug"/>
<Root level="warn">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
在src/main/webapp/WEB-INF
下新建web.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<web-app id="struts2demo" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>struts2demo</display-name>
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<!--老版本的StrutsPrepareAndExecuteFilter在org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter-->
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<!--截获所有的url-->
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
编写前端页面
在src/main/webapp
下新建index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="login.action" method="post">
<p>
User Name:
<input type="text" name="userName"/>
</p>
<p>
Pass Word:
<input type="password" name="passWord"/>
</p>
<input type="submit" value="Login">
</form>
</body>
</html>
welcome.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>welcome</head>
<body>
<p>
Your Name: <s:property value="userName"></s:property>
</p>
<p>
Your Pass Word: <s:property value="passWord"></s:property>
</p>
</body>
</html>
发布工程
Build一下工程,然后在找到IDEA工具栏的Build菜单下的子菜单Build Artifacts==>build all.然后去输出目录找到struts2demo-1.0-SNAPSHOT.war
我这里的配置是在..\struts2demo\build\libs
下。不清楚在哪的可以按下Ctrl+Alt+shift+S
查看Project Structure
=>Artifacts
右上Output directory就是输出目录。
我这里将其改名为login后复制到tomcat的webapps目录下。启动tomcat,打开浏览器输入http://localhost:8080/login/index.jsp
:
输入用户名和密码:
点击提交。
结果: