SSH学习笔记用Struts2实现简单的用户登录

Posted 核心吉力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH学习笔记用Struts2实现简单的用户登录相关的知识,希望对你有一定的参考价值。

说再前面

本篇博文以Struts2的形式最简单地实现了用户登录,悄悄地告诉你,这个可以直接被当作实验报告交哦~


准备阶段

在使用学习Struts2的时候首先要下载相应的架包

Struts2资源下载

这里建议下载第一个,在struts-2.5.14.1-all.zip里有很多实用的东西,不仅有架包还有官方为开发者准备的实例等。

任何所学的知识最有效的检测方式就是做一个小小的实例,这里吉力就带着大家看看Struts2是怎么实现这个功能的。

Struts2核心jar包
struts2-core-2.3.15.3.jar
asm-3.3jar
asm-common-3.3jar
asm-tree-3.3jar
xwork-core-2.3.15.3.3.jar
commons-io-2.0.1.jar
commons-lang-3.3.1.jar
commons-fileupload-1.3.jar
commons-logging-1.1.3.jar
freemarker-2.3.16.jar
log4j-1.2.17.jar
ognl-3.0.6.jar
javassist-3.11.0.GA.jar

项目框架:


1.配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

<display-name>Struts01</display-name>
<!-- 配置 Struts2框架核心Filter -->
<filter>
<!-- 过滤器名 -->
<filter-name>struts2</filter-name>
<!-- 配置Struts2核心Filter实现类 -->
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 让Struts2的核心Filter拦截所有请求 -->
<filter-mapping>
<!-- 过滤名 -->
<filter-name>struts2</filter-name>
<!-- 匹配所有请求 -->
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- <welcome-file-list>  
    <welcome-file>index.html</welcome-file>  
  </welcome-file-list>  
  -->
</web-app>

任何MVC框架需要与Web应用整合时都要借助web.xml配置文件。通常MVC框架只需要在Web应用里加载一个核心控制器即可,对于Struts2来说就是加载StrutsPrepareAndExecuteFilter。一个Web应用只要加载StrutsPrepareAndExecuteFilter后,就具有Struts2的基本功能。


2.创建登录视图

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP \'index.jsp\' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
  <form action="login.action" method="post">
  
    用户名:<input type="text" name="useName"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit" value="登录"><input type="reset" value="重置"> 
  
  </form>
  </body>
</html>

上述页面代码里定义了一个表单,该表单提交给login.action进行处理。表单里有2个输入文本框,分别接收用户名和密码。


3.创建实体POJO层

在src下的com.beans包里创建实体User

package com.beans;

public class User {
	private String useName;
	private String password;
	
	public User() {
		// TODO 自动生成的构造函数存根
	}
	public User(String useName, String password) {
		super();
		this.useName = useName;
		this.password = password;
	}
	public String getUseName() {
		return useName;
	}
	public void setUseName(String useName) {
		this.useName = useName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

在Strut2里,不对,是在整个SSH框架里实体的概念特别重要,它与数据库表相对应,将数据很好的保持了起来,实现了数据的持久化,这样我们以实体的形式传递数据和映射就变得简单。


4.创建业务控制器

在src下的com.action包里添加用于处理用户登录的业务控制器LoginAction类

package com.action;

import com.beans.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class LoginAction extends ActionSupport implements ModelDriven<User>{
	User user=new User();

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String execute()
	{
		if(user.getUseName().equals("jili")&&user.getPassword().length()>=6)
		{
			return SUCCESS;
		}
		else
		{
			return ERROR;
		}
	}

	@Override
	public User getModel() {
		// TODO 自动生成的方法存根
		return user;
	}
	
}

这里采用了模型驱动的方式实现了对于用户输入数据的映射,这个方法比再在action里添加属性接收后再赋给User更加高效。


5.配置业务控制器struts.xml

再src下新建struts.xml配置文件,在该文件配置LoginAction

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>

	<package name="default" namespace="/" extends="struts-default">
		<!-- 定义一个叫user的Action,并带上实现类的路径 -->
		<action name="login" class="com.action.LoginAction">
			<!-- 配置execute()方法返回值与视图资源之间的映射关系 -->
			<result name="success">/suc.jsp</result>
			<result name="error">/error.jsp</result>
		</action>
	</package>
</struts>

该配置文件配置了一个名为login的Action,并指明了Action实现类com.action.LoginAction。在元素里指明execute()方法返回值与视图页面资源之间的映射关系。


6.运行显示

suc.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP \'suc.jsp\' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    欢迎${param.useName}登录!
  </body>
</html>

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP \'error.jsp\' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
   账号或者密码错误!<a href="input.jsp">返回</a> <br>
  </body>
</html>


小结

本篇博文只是最简单地实现了用户登录,这也直观验证了Struts2是MVC的很好的应用。

当然,Struts2还有很多应用比如动态方法的调用、标签库等使用,吉力会在今后的博文里会给大家举例子说明。

以上是关于SSH学习笔记用Struts2实现简单的用户登录的主要内容,如果未能解决你的问题,请参考以下文章

J2EE核心开发学习笔记 003struts2的搭建及连接数据库实现用户注册与登录

ssh学习笔记一:

ssh学习笔记一:struts框架学习

SSH---Struts2Hibernate5Spring4SSH框架整合笔记

刚開始学习的人非常有用:纯struts框架实现用户登陆

struts2学习笔记接收参数