Struts学习笔记

1.当在浏览器中输入http://localhost:8080/web应用时,并不是马上去找web服务器,而是
在本地的c:\windows\system32\driver\etc\hosts 文件下查找该路径下是否有该文件


2.struts开发流程:
用struts开发登录系统
首先创建一个web工程
1.引入struts开发包到工程的lib文件夹下面:struts-config.xml配置详解,struts-1.3.10.7z,struts-config.7z
2.写出login.jsp
3.编写ActionForm 和 Action
4.配置struts-config.xml文件
5.写出welcome.jsp和error.jsp页面
6.在web.xml 中配置ActionServlet
7.开始struts
8.struts中文乱码的问题----->使用过滤器



3.设置打开index.jsp文件时跳转到登录界面的方法:
<body>
<jsp:include page="/WEB-INF/login.jsp"></jsp:include>
</body>
faststone截图工具


4.struts类中的表单类需要继承ActionForm
即UserForm类 需要继承ActionForm,相当于Javabean,有set 和get方法


5.LoginActon需要继承Action ,同时需要重写execute(ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse)方法
这个方法用来处理业务逻辑,会被自动调用 


6.编写struts-config.xml文件 该文件用于配置action 和ActionForm 的对应关系,跳转位置……
一般我们将该文件放在/WEB-INF目录下 (当然也可以放在其他地方)
xml文件一般有个dtd文件
在jar包中struts-core-1.3.10.jar 下的org.apache.struts.resources 下有struts-config_1.3.dtd等文件


7.struts-config.xml中
<struts-config>
<!---配置表单-->
<form-beans>
<!-- name是表单名字,可以任意写,但是我们建议取名规范,建议取名表单类名小写-->
<!--type用于指定表单类的全路径-->
<form-bean name="userForm" type="com.hsp.forms.UserForm" />
</form-beans>

<!--配置action--->
<action-mappings>
<!--配置具体的一个action   path:表示将来访问该action的资源名,http://localhost:8080/web/--->
<!--下面的name名字要跟上面的form-bean的name名字相同-->
//type 用于指定action类的全路径
<action path="/login" name="userForm" type="com.hsp.actions.action类名">
<!---这里配置跳转关系-->
<!---name表示结果名称  path:转发到需要去的页面-->
<forward name="ok" path="/WEB-INF/wel.jsp" />
<forward name="err" path="/WEB-INF/err.jsp" />
</action>
</action-mappings>
</struts-config>


可以在网上下载struts-config.xml配置的详细过程


8.在web.xml文件中配置 总的servlet
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.strusts.action.</servlet-class>

<!---配置struts-config.xml文件的位置->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml/</param-value>
</init-param>
</servlet>


<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


struts中包含的控件有:
web服务器  
ActionServlet(总控制器/也叫总司令,该类由struts框架提供,我们只需要配置)
ActionForm(表单,用于存放数据/也叫军火库,它需要继承ActionForm类才是一个表单类)
Action(如LoginAction 分控/也叫小队长,小队长可以有多个,本质是servlet)
model(java类 Service ,ejb,/也叫小兵)


LoginAction.java 类中
public class LoginAction extends Action{
@override
public ActionForward execute(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)throws Exception{
//把form转换成对应的UserForm对象
UserForm userForm = (UserForm)form;

//对密码进行简单的验证
if("123".equals(userForm.getPassword())){
return mapping.findForward("ok");//这个ok 对应struts-config.xml文件中 forward标签中的 name="ok"
}


}


}




9.struts细节分析
特别注意表单中的setXX方法 和getXX方法的 XX名字必须跟表单的名称一样,而且首字母要大写


10.如果使用sendRedirect()方法  request中存放的对象不能被取出 因为该方法是先回到浏览器 然后再发到服务器
而forward()方法就可以


11.struts中表单的中文乱码必须使用过滤器
步骤如下:
开发一个过滤器,并设置request.setCharacterEncoding("utf-8");
由于过滤器可以有很多,所以可以建立一个专门存放过滤器的包,将过滤器的类(servlet)都放在该包下面
新建一个servlet,需要继承Filter javax.servlet (注意选择)













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  一、漏洞简介     Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品:Struts 1和Struts 2。     Apache Struts 2.3.5 - 2.3.31版本及2.5 - 2.5.10版本存在远程代码执行漏洞(CNNVD-201703-15 2,CVE-2017-5638)。该漏洞与Apache Struts2 (S2-045)远程代码执行漏洞原理基本相同,均是由于上传功能的异常处理函数没有正确处理用户输入的错误信息,导致远程攻击者可通过发送恶意的数据包,利用该漏洞在受影响服务器上执行任意命令。      二、漏洞危害     攻击者可通过发送恶意构造的HTTP数据包利用该漏洞,在受影响服务器上执行系统命令,进一步可完全控制该服务器,造成拒绝服务、数据泄露、网站造篡改等影响。由于该漏洞利用无需任何前置条件(如开启dmi,debug等功能)以及启用任何插件,因此漏洞危害较为严重。     三、修复措施     目前,Apache官方已针对该漏洞发布安全公告,并且漏洞利用代码已被公布在互联网上,请受影响用户及时检查是否受该漏洞影响。另外,已通过升级方式修复了Apache Struts2 (S2-045)远程代码执行漏洞的用户,不在该漏洞影响的范围内。     【自查方式】     用户可查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar文件,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞。     【升级修复】     受影响用户可升级版本至Apache Struts 2.3.32 或 Apache Struts 2.5.10.1以消除漏洞影响。     官方公告: https://cwiki.apache.org/confluence/display/WW/S2-046 https://cwiki.apache.org/confluence/display/WW/S2-046

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值