java里Struts2学习登录练习详解
最近在学struts2里面遇到很多错误,今天跟大家分享一下,我的开发工具是Eclipse;
1、到网上下载Struts2的包,这里不再累赘,百度有很多;
2、新建一个项目,记得后面加上web.xml文件;
3、先部署struts2开发环境。
(1)、在struts2.2以后,我们需要导入的包有以下几个:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
commons-lang3-3.1.jar
freemarker-2.3.16.jar
javassist-3.7.ga.jar
ornl-3.0.jar
struts2-core-2.2.1.1.jar,
xwork-core-2.2.1.1jar
我通常都是把这些文件复制到WEB-INF/lib目录里。也可以在项目属性的Java Build Path中的libraries里面添加;
(2)、在lib文件夹下面的web.xml文件添加以下内容:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
现在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>Struts2Mianshi</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.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
(3)、在src目录下新建struts.xml文件,记住配置文件位置 在src目录下,命名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.0.dtd">
<struts>
<package name="main" extends="struts-default">
<!--这个里面写action配置-->
</package>
</struts>
4、在WebContent建一个文件夹存放JSP页面的(我建议还是建立一个Page文件夹 有利于文件的管理,还有后面的路径也好弄)
5、在Page文件里创建一个JSP文件命名index.jsp写登陆界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String RootPath=request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆界面</title>
</head>
<body>
<form action="<%=RootPath %>/login" method="post">
登陆<br/>
账号:<input type="text" name="username" /><br />
密码:<input type="password" name="userpwd" /><br />
<input type="submit" value="提交"/>
</form>
</body>
</html>
<%=request.getContextPath()%>是为了解决相对路径的问题,可返回站点的根路径。
6、在src下创建一个包在创建一个loginAction.java 让这个类继承ActionSupport(action文件命名规则自己看)
看到JSp页面的账号username与密码userpws不。这边要获取就要命名跟他一样
private String UserName;并get、set 然后写execute()方法
package com.weiyang.acction; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial")
public class loginAction extends ActionSupport {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpwd() {
return userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
private String userpwd; /**
* execute方法会在该Action类被调用的时候自动执行,
* 如果 账号="admin"并且密码="123456",就返回SUCCESS
* 否则返回ERROR
*/
public String execute()
{
if(username.equalsIgnoreCase("admin") && userpwd.equalsIgnoreCase("123456"))
{
return SUCCESS;
}
else {
return ERROR;
}
}
}
7、action写好了就去配置struts.xml
<!--action标签的name是login,这个必须跟index.jsp中的action属性一致性。class是loginAction类的全称-->
<action name="login" class="com.weiyang.acction.loginAction">
<!--这个标签的意思是当LogAction类的execute方法返回SUCCESS时,页面跳转到success.jsp-->
<result name="success">WEB-INF/success.jsp</result>
<result name="error">WEB-INF/error.jsp</result>
</action>
login,这个必须跟index.jsp中的action属性一致性。class必须写loginAction类的全称
success 跟error是jsp文件 用来验证成功与失败 把他们新建在WEB-INF目录下
<result name="success">WEB-INF/success.jsp</result> 其他目录建立的写好路径
我的文件结构
个人理解的流程,web.xml文件中加入了strtus配置文件,所以index.jsp运行后指向action里面的login,在struts.xml文件找到login通过class找到action类,进行execute方法根据返回的success或者error又指向对应的jsp文件显示给用户。
开始做的时候 出现额404错误
<!--<constant name="struts.action.extension" value="action,do"></constant>--> 我在struts.xm文件中有这句运行index.jsp出现404
action="<%=RootPath %>/login" method="post"> 没有获取项目路径也是404,就是像这样action="login" method="post">
因为我建了一个文件夹PageHH存放jsp文件 所以路径就出现问题
最多的还是上面说的细节 命名,struts.xml文件里的配置不仔细出现的404
目前遇到的问题 在struts.xml文件包含了一个login.xml文件 让他代替struts.xml配置实现登陆模块,以后可以根据各自的功能建不同的配置文件。
<include file="login.xml"></include>
这句加上去 login.xml文件配置也没发现村 运行起来就出现404 还在找问题
初学者 大神勿喷!
java里Struts2学习登录练习详解的更多相关文章
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)
这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...
- 牛客网 Java 工程师能力评估 20 题 - 详解
牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...
- Java性能分析之线程栈详解与性能分析
Java性能分析之线程栈详解 Java性能分析迈不过去的一个关键点是线程栈,新的性能班级也讲到了JVM这一块,所以本篇文章对线程栈进行基础知识普及以及如何对线程栈进行性能分析. 基本概念 线程堆栈也称 ...
- java实现微信扫一扫详解
java实现微信扫一扫详解 一.微信JS-SDK参数配置及查找 JS安全域名配置(查找:微信公众号里-公众号设置-功能设置页) 注:1.安全域名外网必须可以访问的到 2.域名不能有下划线 3.要将 ...
- Flink 从 0 到 1 学习 —— Flink 配置文件详解
前面文章我们已经知道 Flink 是什么东西了,安装好 Flink 后,我们再来看下安装路径下的配置文件吧. 安装目录下主要有 flink-conf.yaml 配置.日志的配置文件.zk 配置.Fli ...
- iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...
- 各大公司广泛使用的在线学习算法FTRL详解
各大公司广泛使用的在线学习算法FTRL详解 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据 ...
- Java 反射 设计模式 动态代理机制详解 [ 转载 ]
Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...
随机推荐
- UIStackView属性解释
Distribution 分布: Fill:填充,会根据优先级来压缩或伸长元素 Fill Equal:全都相等,并且都填充满 Fill Proportionally:按比例填充,根据元素的内容多少的比 ...
- Android组件生命周期(三)
Android系统试图尽可能长地保持一个应用程序进程,但是当内存低时它最终还是需要移除旧的进程.为了决定保持哪个进程及杀死哪个进程,Android将每个进程放入一个基于运行于其中的组件的重要性等级和这 ...
- ID3算法(Java实现)
数据存储文件:buycomputer.properties #数据个数 datanum=14 #属性及属性值 nodeAndAttribute=年龄:青/中/老,收入:高/中/低,学生:是/否,信誉: ...
- Delphi 常用函数记录
//判断是否是数字 function IsNumeric(sDestStr: string): Boolean; //简写多余汉字 function SimplifyWord(sWord: strin ...
- 使用IDA静态分析解密《舰娘Collection》的lua脚本
好久没写东西了,换工作之后忙得一比.你说创业?风太大没听清啊看了看以前写的东西,觉得以前写得太严肃了,从现在开始要轻松一点,要做一名逗逼码农. 本文不会介绍破解的细节,最终完成破解所编写的代码也不会公 ...
- IIS 挂载android的apk文件进行下载
需要进行MIME的映射处理: 添加MIME映射:文件扩展名:.apk,MIME文件类型:application/vnd.android
- enum 用法
public enum WeekDay { SUN(, "Sunday", "SUN"), MON(, "Monday", "MO ...
- POJ3250(单调栈)
Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17614 Accepted: 5937 Des ...
- HDU5832
A water problem Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- office如何去除多页签
写文档会遇到同时打开多个文档,偶尔可能需要对比,而有时office会出现跟浏览器类似的多页签界面.如何去除多页签,office本身没有此加载项,一般都是作为插件或组件形式另外安装,导致我们不知道从哪里 ...